2
我正在使用ImageMagick從PHP創建透明圖片。在帶有透明背景的繪製文本上添加圖案覆蓋
我想知道是否有可能(以及如何)在生成的圖像上添加圖案疊加層。 的想法是離開的背景透明,並通過文本應用紋理:
實際結果:
期望的結果:
任何意見將不勝感激。
我正在使用ImageMagick從PHP創建透明圖片。在帶有透明背景的繪製文本上添加圖案覆蓋
我想知道是否有可能(以及如何)在生成的圖像上添加圖案疊加層。 的想法是離開的背景透明,並通過文本應用紋理:
實際結果:
期望的結果:
任何意見將不勝感激。
使用ImagickDraw創建一個「繪製」對象(它就像一個圖層),然後將其添加到圖像上。這裏有一個例子:
// create canvas
$draw = new ImagickDraw();
$draw->setfont('/path/to/your/font.ttf');
// load your overlay image
$overlay = new Imagick('/path/to/your/pattern.png');
// define pattern
$draw->pushPattern('myOverlay', 0, 0,
$overlay->getImageWidth(), $overlay->getImageHeight());
// fill canvas with the pattern (tile)
$draw->composite(Imagick::COMPOSITE_COPY, 0, 0,
$overlay->getImageWidth(), $overlay->getImageHeight(), $overlay);
// destroy pattern
$draw->popPattern();
$draw->setFillPatternURL('#myOverlay');
// put text
$draw->setFontSize(100);
$draw->annotation(0, 0, 'My TextImage');
// create your image (800x400)
$output = new Imagick();
$output->newimage(800, 400, 'transparent');
// this will center your canvas
$output->setGravity(Imagick::GRAVITY_CENTER);
// render canvas on this image
$output->drawImage($draw);
$output->setImageFormat('png');
header('Content-Type: image/png');
print $output;
如果你想被拉伸覆蓋,以適應800×600,然後使用該尺寸,而不是圖形尺寸合成
時