我正在尝试使用1到3张图片创建一个Open Graph Image蒙太奇,并在最终的蒙太奇上覆盖一个徽标。我使用以下代码 - 但是,我必须生成1到3图像蒙太奇,然后添加徽标并生成新图像,然后删除第一个图像。我确信有一种更有效的方法可以做到这一点 - 使用一个exec
完成所有操作,而不必输出两个图像,然后删除一个。谢谢你的任何建议。
if ($array_count == 1) {
$w = 898;
$h = 474;
$t = '1x1';
} else if ($array_count == 2) {
$w = 449;
$h = 474;
$t = '2x2';
} else if ($array_count == 3) {
$w = 299;
$h = 474;
$t = '3x1';
}
$exe = " montage ";
foreach ($photo_array as $p) {
$exe .= " http://website.com/images/{$p} -thumbnail {$w}x{$h}^ -gravity center -extent {$w}x{$h} -geometry {$w}x{$h}+1+1 ";
}
$exe .= "-tile $t ";
$exe .= " poster1.jpg ";
exec("$exe");
exec(" convert poster1.jpg logo_overlay.png -gravity SouthEast -geometry +10+10 -composite poster2.jpg ");
@unlink("poster1.jpg");
$img_out = "poster2.jpg";
答案 0 :(得分:0)
更新了答案
根据您提供的进一步信息,这可能会帮助您了解如何操作:
montage red.png lime.png blue.png cyan.png magenta.png yellow.png -geometry +0+0 -tile 3x2 miff:- | convert miff:- -gravity southeast logo.png -composite result.png
徽标为黑色,50x50,而其他图块为100x100。
原始答案
你可以通过几种方式来实现 - 请将这些作为原理图答案,而不是详细到最后一个像素 - 但你应该明白这一点。
选项1
您绝对不需要使用montage
来布置图片,您可以使用append
命令来convert
命令,-append
将放置+append
一张图像位于另一张图像下方,convert
会将一张图像放在另一张图像的右侧。然后,由于您已经在使用montage
而不是convert \( image1.png -resize ... -extent ... \) \
\( image2.png -resize ... -extent ... \) \
+append \
\( image3.png -resize ... -extent ... \) \
+append \
logo.png -gravity ... -composite result.png
,因此您可以将徽标组合在一起。所以,你的命令看起来像这样:
MIFF
选项2
您可以将命令/图像链接在一起,理想情况是将ImageMagick的foreach image do
convert image -resize ... -extent ... miff:-
done | montage -tile ... miff:- miff:- | convert miff:- logo.png -composite result.png
文件格式发送到命令之间的管道,因为这样可以保留所有图像细节,分辨率和透明度。所以你可以这样做:
dueAmount