我没有在php中使用exec命令,因此我无法访问以下手册中的以下内容:http://www.imagemagick.org/Usage/layers/所在的位置,"您可以进一步使用制作一整套图像,并按行或列构建它们。"
convert \( font_1.gif font_2.gif font_3.gif +append \) \
\( font_4.gif font_5.gif font_6.gif +append \) \
\( font_7.gif font_8.gif font_9.gif +append \) \
\( -size 32x32 xc:none font_0.gif +append \) \
-background none -append append_array.gif
在想象中使用http://php.net/manual/en/imagick.appendimages.php appendImages函数如何模拟看似更强大的追加CLI命令以按行和列追加图像?或者只是在imagick中使用appendImages函数是不可能的?
我希望能够在php中创建一个数组,如下所示,循环遍历它,并在每个新行上,以某种方式告诉appendImages使用imagick,它应该在组合图像之前开始一个新行。
$rack = [
'row1' => [
'image1.jpg',
'image2.jpg'
],
'row2' => [
'image3.jpg',
'image4.jpg'
]
];
我的问题是,如何在imagick或其他函数中使用appendImages来实现与CLI convert -append命令类似的结果?
我知道我可以使用其他函数,比如compositeImage,并使用x,y来控制定位,但简单地追加行对我的用例来说会更简单。
答案 0 :(得分:3)
您可以仅使用appendImages()
执行两阶段过程(类似于该命令似乎执行的操作):
appendImages()
指定stack=false
appendImages()
指定stack=true
像这样:
$rack = [
'row1' => [
'image1.jpg',
'image2.jpg'
],
'row2' => [
'image3.jpg',
'image4.jpg'
]
];
$fullimage = new Imagick();
foreach ($rack as $k => $v) {
$rowimg = new Imagick();
foreach ($v as $imagelocation) {
$rowimg->readImage($imagelocation);
}
$rowimg->resetIterator();
$combinedrow = $rowimg->appendImages(false);
$fullimage->addImage($combinedrow);
}
$fullimage->resetIterator();
$finalimage = $fullimage->appendImages(true); // <-- Done.