我花了太多时间来尝试理解这个问题,因此希望这能帮助其他人。当在谷歌上搜索所谓的“crop 'n drop”功能的文档时,这个问题排名很高。
概述:
jpegtran -drop
可以让你将一个JPEG图像的块"drop"到另一个JPEG图像上。
它只会替换现有的块,不会扩展输入,所以您不能仅使用-drop
来连接两个JPEG图像。
但是,如果您提供的-crop
参数大于输入图像,则JPEGTran将编写空(灰色)块以扩展至所需大小。您可以使用-drop
来替换这些新的、空白的块为所需的图像。
以下是我邋遢的ASCII艺术示例:
您有两个图像:A.jpg
和B.jpg
,它们的尺寸都是256x256
。我们想要将它们并排连接起来产生一个512x256
的图像。
+
| | | |
| A.jpg | | B.jpg |
| | | |
+
将A.jpg
的尺寸“取消裁剪”到所需大小。 -crop
参数是标准的X11几何符号表示法:WIDTHxHEIGHT + X + Y,其中正值的X/Y从左上角开始测量,而负值从右下角开始测量。
jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg
+---------+---------+
| \ |
| O.jpg \ (blank) |
| \ |
+---------+---------+
现在将B.jpg
“拖放”到O.jpg
中的新空白区域中。 -drop
参数仅使用原点X/Y坐标。
jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg
+---------+---------+ +---------+
| \ | | |
| O.jpg \ o<========| B.jpg |
| \ | | |
+---------+---------+ +---------+
完成了!现在你有一个尺寸为512x256
的单个文件O.jpg
,其中包含A.jpg
和B.jpg
的内容拼接在一起。
+-------------------+
| |
| O.jpg |
| |
+-------------------+
注:
A.jpg
和 B.jpg
必须具有相等的高度。 如果 B.jpg
更高,它将被裁剪。 如果 A.jpg
更高,则图像的右侧将有一个空白的填充条.
A.jpg
的宽度必须以完整块结束。(通常意味着可被8整除?)
B.jpg
可以具有任何宽度,并且不必是块大小的倍数。