ImageMagick:将一幅图像的 4 个边缘并排合成到另一幅图像中

ImageMagick: composite 4 edges from one image into another, side-by-side

我正在使用 Perl 5.16 和 ImageMagick 6.8(现在可能已经过时了,但它可以工作:)。我正在尝试从一个图像中提取所有 4 个边缘区域,并将它们并排、垂直地合成到另一个图像中。

我可以提取边缘并旋转它们,但我无法正确获得目标图像中的偏移量。边缘最终彼此重叠。我尝试了 x=>$marg, translate=>"$marg,0", 带有偏移量的几何体:没有骰子。变量:$marg = 边缘宽度,$im = 源,$im2 = 目标,$ext = 提取区域

# left edge
$ext=sprintf("%dx%d+%d+%d",$marg,$h,0,0);
$res=$im2->Composite(image=>$im,compose=>Over,extract=>$ext);

# top edge
$ext=sprintf("%dx%d+%d+%d",$w,$marg,0,0);
$geo=sprintf("%dx%d+%d+%d",$marg,$h,0,0);
$res=$im2->Composite(image=>$im,compose=>Over,extract=>$ext,rotate=>90,translate=>"$marg,0");

我已经很多年没有使用 PerlMagick 绑定了,但我想您会想要创建 4 个边缘条中的每一个,然后使用 +append 将它们并排水平放置。这是一个粗略的例子,就在终端中:

magick -size 20x50 xc:red xc:lime xc:blue +append result.png

更具体地解决您的问题,并从这张图片开始:

看起来像这样:

#!/bin/bash

magick ~/sample/images/blocks-RGB.png -resize 100x100 +repage -write MPR:orig +delete \
    \( MPR:orig -gravity northwest -crop 30x+0+0 \) \
    \( MPR:orig -gravity northwest -crop x30+0+0 -rotate 90 \) \
    \( MPR:orig -gravity southwest -crop x30+0+0 -rotate 90 \) \
    \( MPR:orig -gravity northeast -crop 30x+0+0 \) \
    +append result.png
    

希望您能看到与 PerlMagick 的相似之处。第一行创建要处理的图像副本,第二行裁剪左边缘,第三行裁剪上边缘,第四行裁剪下边缘,第五行裁剪右边缘,最后一行 并排附加四个裁剪的片段。