2016-04-18 21 views
0

我试图创建一个使用1和3图像之间的开放图像图像蒙太奇,并在最终蒙太奇上覆盖一个标志。我用下面的代码工作 - 但是,我必须生成1到3图像蒙太奇,然后添加徽标并生成一个新图像,然后删除第一个图像。我确信有一个更有效的方法来做到这一点 - 全部使用exec,而不必输出两个图像,然后删除一个。感谢您的任何建议。ImageMagick带标志的蒙太奇

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

更新回答

在您提供的进一步资料,也许这将帮助你了解如何做到这一点:

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 

enter image description here

的徽标是黑色和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 

选项2

您可以链的命令/图像组合在一起,最好通过发送ImageMagick的MIFF文件格式下的命令作为之间的管道将保留全部图像细节,分辨率和透明度。所以你可以这样做:

foreach image do 
    convert image -resize ... -extent ... miff:- 
done | montage -tile ... miff:- miff:- | convert miff:- logo.png -composite result.png 
+0

嗨马克。我尝试了第一个选项,但是我也需要它来处理多达6个图像。平铺3x3。为了简单起见,我只在示例中使用了3张图片。我应该包含所有的代码,最多可以平铺6张图片。所以,第一个选项对我来说不适用于超过3张图片,而我似乎无法使用miff:-'来计算第二个选项。你能否详细介绍我如何实现选项2.非常感谢您的帮助。 – Chris

+0

@Chris我已经更新了答案 - 希望你现在可以看到如何去做。 –

+0

非常感谢,马克。这工作完美。 – Chris

相关问题