Imagick:如何使用 appendImages 附加图像网格
Imagick: How to append a grid of images with appendImages
我没有在 php 中使用 exec 命令,所以我无法访问 运行 手册中的类似以下内容:http://www.imagemagick.org/Usage/layers/ 其中指出,"You can take this further to make a whole array of images, and build them either by rows, or by columns."
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
如何使用 imagick 中的 http://php.net/manual/en/imagick.appendimages.php appendImages 函数来模拟看似更强大的 append CLI 命令以按行和列附加图像?还是仅仅使用 imagick 中的 appendImages 函数是不可能的?
我希望能够像下面这样在 php 中创建一个数组,遍历它,并在每个新行上,以某种方式使用 imagick 告诉 appendImages,它应该在组合之前开始一个新行图片。
$rack = [
'row1' => [
'image1.jpg',
'image2.jpg'
],
'row2' => [
'image3.jpg',
'image4.jpg'
]
];
我的问题是,如何在 imagick 中使用 appendImages 或 imagick 中的其他函数来实现与 CLI convert -append 命令类似的结果?
我知道我可以使用其他函数,如 compositeImage 并使用 x,y 来控制定位,但简单地追加行对于我的用例来说会简单得多。
您可以仅使用 appendImages()
执行两阶段过程(类似于该命令似乎执行的操作):
- 遍历行,从左到右水平附加每行的内容,
appendImages()
指定 stack=false
- 使用
appendImages()
指定 stack=true
从上到下垂直附加所有生成的 Imagick 行对象
像这样:
$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.
我没有在 php 中使用 exec 命令,所以我无法访问 运行 手册中的类似以下内容:http://www.imagemagick.org/Usage/layers/ 其中指出,"You can take this further to make a whole array of images, and build them either by rows, or by columns."
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
如何使用 imagick 中的 http://php.net/manual/en/imagick.appendimages.php appendImages 函数来模拟看似更强大的 append CLI 命令以按行和列附加图像?还是仅仅使用 imagick 中的 appendImages 函数是不可能的?
我希望能够像下面这样在 php 中创建一个数组,遍历它,并在每个新行上,以某种方式使用 imagick 告诉 appendImages,它应该在组合之前开始一个新行图片。
$rack = [
'row1' => [
'image1.jpg',
'image2.jpg'
],
'row2' => [
'image3.jpg',
'image4.jpg'
]
];
我的问题是,如何在 imagick 中使用 appendImages 或 imagick 中的其他函数来实现与 CLI convert -append 命令类似的结果?
我知道我可以使用其他函数,如 compositeImage 并使用 x,y 来控制定位,但简单地追加行对于我的用例来说会简单得多。
您可以仅使用 appendImages()
执行两阶段过程(类似于该命令似乎执行的操作):
- 遍历行,从左到右水平附加每行的内容,
appendImages()
指定stack=false
- 使用
appendImages()
指定stack=true
从上到下垂直附加所有生成的 Imagick 行对象
像这样:
$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.