[英]ImageMagick montage with logo
我正在嘗試使用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";
更新的答案
根據您提供的更多信息,也許這可以幫助您了解如何做:
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
來布置圖像,您可以在convert
命令中使用append
選項,其中-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
選項2
您可以將命令/圖像鏈接在一起,理想情況下是通過在命令之間沿管道發送ImageMagick的MIFF
文件格式,因為這將保留所有圖像細節,分辨率和透明度。 因此,您可以執行以下操作:
foreach image do
convert image -resize ... -extent ... miff:-
done | montage -tile ... miff:- miff:- | convert miff:- logo.png -composite result.png
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.