Я хочу сделать следующее на PHP в сочетании с GD. ImageMagick – это не вариант, к сожалению, но это похоже на такую общую проблему, что должно быть решение, я просто не могу найти его.
Я хочу создать PNG с прозрачным фоном. Затем я хочу нарисовать на нем прямоугольник, скопировать изображение на него и добавить текст. Один из способов сделать это заключается в следующем:
$image = ImageCreateTrueColor (800, 600); imagecolortransparent ($image, 0); //0 is pure black, the default fill color imagerectangle (...); //code to copy an image imagettftext ($image, ...); imagepng ($image);
Это прекрасно работает, за исключением того, что часть скопированного изображения может быть черной, и / или текст может быть черным. Это также становится прозрачным, чего я не хочу.
imagefill ($image, 0,0, 0x7FFF0000); imagetransparent ($image, 0x7FFF0000);
Вышеупомянутый код – это то, что я нашел в Интернете, которое заполняет его красным, а затем делает красный прозрачным. Опять же, это приводит к тому, что все красные изображения станут прозрачными. Я мог бы выбрать цвет, который вряд ли произойдет, но я не могу этого гарантировать.
Есть что-то, что мне не хватает? Можно ли это исправить? Спасибо за ваши ответы!
imagecolortransparent
, вероятно, не то, что вы хотите здесь, если вы объединяете изображения, так как прозрачность одного цвета является неприятной.
Вместо этого попробуйте использовать прозрачную маску заливки так:
<?php $image = imagecreatetruecolor(100, 100); // Transparent Background imagealphablending($image, false); $transparency = imagecolorallocatealpha($image, 0, 0, 0, 127); imagefill($image, 0, 0, $transparency); imagesavealpha($image, true); // Drawing over $black = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 25, 25, 75, 75, $black); header('Content-Type: image/png'); imagepng($image);