相对imagemagick转换:相对裁剪?

时间:2017-01-18 05:02:51

标签: imagemagick

我正在尝试执行以下一组转换而不知道目标图像的绝对宽度或高度:

1. Crop image A by 10px on every size :: A1 2. Create duplicate of A1 translating image by 1270px on the y-axis :: A2 3. Create montage of A1 && A2 :: A3 4. Translate A3 by 385px on the y-axis :: A4 5. Crop A4 at 100% width, and 1270px tall (box from 0,0 to WIDTH,1270) :: A5

我的问题是我如何用相对坐标做第1步和第5步?以下是我提出的步骤:

1. convert A.jpg -shave 10x10 A1.jpg 2. convert A1.jpg -page +0-1270 -background none -flatten A2.jpg 3. montage A1.jpg A2.jpg -geometry +0+0 A3.jpg 4. convert A3.jpg -page +0-385 -background none -flatten A4.jpg 5. convert A4.jpg ????? A5.jpg

1 个答案:

答案 0 :(得分:2)

更新了答案

好的,我想我明白你现在想要的更好一些。以下是我将如何做到这一点:

convert start.jpg -crop +0+383 +repage \
   \( -clone 0 -crop x1270+0+0    \)   \
   \( -clone 0 -crop x1270+0+1270 \)   \
   -delete 0 +append result.jpg

第一行说... "拍摄起始图像并裁掉前383像素并重置所有尺寸以匹配剩下的尺寸。从现在开始称之为第一张图片。"

第二行说... "在一侧(由于括号),克隆第一张图像并从顶部裁剪出全宽和1270像素的高度。保持这一点直到稍后 - 即将其保留在图像列表中。"

第三行说... "到一边(因为括号),克隆第一张图片,裁剪出一个全宽和1270像素的高度,但是开始1270像素从一开始。保持这一点直到稍后 - 即将其保留在图像列表中。"

最后一行说... "删除初始图像,然后取出图像列表中的两个切片并将它们并排添加,另存为result.jpg&# 34。

原始答案

我认为我们需要在这一方面共同努力,但可以做到。让我们从一个具有15px黑色边框的400x250渐变的具体图像开始:

convert -size 250x400 gradient:red-cyan -rotate 90 -bordercolor black -border 15 A.png

enter image description here

所以,第1步。

convert A.png -shave 10x10 A1.png

enter image description here

第2步和第3步。我不明白这些!您似乎正在尝试为不支持透明度的JPEG添加透明空间。而且,我不能告诉你在哪里等待。请用简单的英语尝试用这两个步骤表达您想要的内容,例如"添加透明区域N像素宽/高于上/下,A2 /#34的左/右; ,或者也许"添加一个透明区域,使新尺寸为X,Y,原始A2图像位于新画布的右下角。"

如果我在步骤2和3中有 stab ,我猜这个(并添加一个紫色边框,这样你就可以在StackOverflow的白色背景上看到它)。我在图像下方添加一个1270像素高的透明区域。

convert A.png -background none -shave 10x10 xc:none[1x1270\!] -append b.png

enter image description here

第4步和第5步。如上所述。

或者你的意思是:

convert A.png -background magenta -shave 10x10 -gravity southeast -extent 1270x385 result.png

enter image description here

如果我们了解您的需求,我认为我们可以让您只使用一个命令,没有中间文件。