JPEG 的无损裁剪(剪切和粘贴)
我正在寻找无损 jpeg 操作的示例/博客文章/等(裁剪 n drop = 剪切和粘贴)。我知道有一个程序jpegtran
(http://jpegclub.org/jpegtran)可以执行无损裁剪(在某些情况下),但似乎缺乏良好的文档。是的,我已经尝试过谷歌。
jpegtran
还有一个实验分支,允许在某些情况下无损删除(=粘贴),但其文档似乎更糟糕。
jpegtran 的 drop
开关是实验性的吗?它有已知问题吗?人们使用它吗?
drop
似乎是一个非常酷且有用的功能,我觉得奇怪的是它已经实验了 10 多年......
是的,人们可以使用无损格式(例如 PNG)来进行此类操作,但我我对 JPEG 特别感兴趣。
谢谢!
I'm looking for examples/blog posts/etc of lossless jpeg operations (crop n drop = cut and paste). I know there is a program jpegtran
(http://jpegclub.org/jpegtran) which can perform lossless cropping (in certain situations), but there seems to be a lack of good documentation. Yes, I have tried the google.
jpegtran
also has an experimental branch that allows lossless dropping (= pasting) in certain situations, but the documentation of this seems to be even worse.
What about jpegtran's drop
switch is experimental? Does it have known issues? Do people use it?
drop
seems like a really cool and useful feature, and I find it odd that it's been experimental for over 10 years...
And yes, one could use lossless formats such as PNG for such operations, but I'm specifically interested in JPEGs.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我花了太多时间试图解决这个问题,所以希望这对其他人有帮助。当搜索关于这个所谓的“crop 'n drop”功能的文档时,这个问题在谷歌上的排名相当高。
概述:
jpegtran -drop
允许您将块从一个 JPEG“拖放到”另一个 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 值分别从顶部/左侧开始测量,负值从底部/右侧开始测量。现在将
B.jpg
拖放到O.jpg
中新的空白部分-drop
参数仅使用原点 X /Y 坐标。完成!您现在有一个文件
O.jpg
,尺寸为512x256
,其中包含A.jpg
和的串联内容B.jpg
<前><代码>+--------------------+
| |
| O.jpg |
| |
+--------------------+
注意:
A.jpg
和B.jpg
必须具有相同的高度。如果B.jpg
较高,则会被剪掉。如果A.jpg
较高,则图像的右侧将有一个空白的填充条。A.jpg
的宽度必须以完整块结束。 (通常意味着可以被 8 整除?)B.jpg
可以具有任意宽度,并且不必是块大小的倍数。I spent entirely too much time trying to figure this out, so here's hoping this helps someone else. This question is pretty high on Google when searching for docs on this so-called "crop 'n drop" feature.
Overview:
jpegtran -drop
allows you to "drop" the blocks from one JPEG onto another JPEG.It only replaces existing blocks, it will not expand the input, so you cannot concatenate two JPEGs with only
-drop
.However, if you supply a
-crop
parameter larger than the input image, JPEGTran will write out blank (grey) blocks to expand to the desired size. You can then use-drop
to replace these new, blank blocks with your desired image.Behold my crappy ASCII-art example:
You have two images,
A.jpg
andB.jpg
, both have dimensions of256x256
. We want to concatenate these side-by-side to produce a512x256
image."Uncrop"
A.jpg
to the size required. The-crop
parameter is standard X11 geometry notation: WIDTHxHEIGHT+X+Y Positive X/Y values measure from the top/left, and negative values from the bottom/right, respectively.Now "drop"
B.jpg
into the new, blank section inO.jpg
The-drop
parameter uses just the origin X/Y coordinates.Done! You now have a single file,
O.jpg
, with dimensions of512x256
, that contains the concatenated contents ofA.jpg
andB.jpg
Notes:
A.jpg
andB.jpg
must have equal height. IfB.jpg
is taller, it will be cut off. IfA.jpg
is taller, the right side of the image will have a blank strip of padding.A.jpg
must have a width that ends on a complete block. (Usually means divisible by 8?)B.jpg
may have any width, and does not have to be a multiple of the block size.jpegtran
手册页和两个 Windows 应用程序(JpegCrop 和 JpegJoin)相当不错。如果您有想要完成的特定过程,请更新您的问题以进行解释。我自己在公司主页上使用
-drop
对 JPEG 进行无损分割:http://bestelec.co.uk/images/front/features.jpg
cjpeg
使用各种质量选项运行它们,直到找到我满意的最低质量设置。最终结果是我将 3 个 HTTP 请求减少为 1 个,从而允许更早地请求同一主机上的后续资源并缩短加载时间。对我来说,这比将图像转换为 WebP 并单独提供它们来说是一个更大的胜利,特别是考虑到我们的大多数企业访问者都使用 IE。
The
jpegtran
man page and the two windows apps (JpegCrop and JpegJoin) are fairly good. If you have a specific procedure you are trying to accomplish, please update your question to explain it.Myself, I have used
-drop
to do lossless spriting of JPEGs on my company home page:http://bestelec.co.uk/images/front/features.jpg
cjpeg
with various quality options, until I found the lowest quality setting I was comfortable with.jpegtran -optimise -progressive -copy none
to make it as small as possible, and progressive.The net result is I have reduced three HTTP requests to one, allowing subsequent resources on the same host to be requested earlier and improving load times. This was a bigger win for me than converting the images to WebP and serving them individually, especially given that most of our corporate visitors are using IE.