我正在寻找无损jpeg操作的示例/博客文章/等(裁剪n drop =剪切和粘贴)。我知道有一个程序jpegtran
(http://jpegclub.org/jpegtran)可以执行无损裁剪(在某些情况下),但似乎缺乏良好的文档。是的,我试过谷歌。
jpegtran
还有一个实验分支,在某些情况下允许无损丢弃(=粘贴),但是这方面的记录似乎更糟。
jpegtran的drop
开关是实验性的?它有已知问题吗?人们用它吗?
drop
似乎是一个非常酷且有用的功能,我觉得很奇怪它已经实验了10多年......
是的,可以使用PNG等无损格式进行此类操作,但我对JPEG特别感兴趣。
谢谢!
答案 0 :(得分:7)
我花了太多时间试图解决这个问题,所以我希望这有助于其他人。在这个所谓的" crop' n drop"上搜索文档时,Google上的这个问题相当高。特征
概述:
jpegtran -drop
可让您“放弃”#34;从一个JPEG到另一个JPEG的块。
它只替换现有的块,它不会扩展输入,因此你不能只用-drop
连接两个JPEG。
但是,如果您提供的-crop
参数大于输入图像,则JPEGTran会写出空白(灰色)块以扩展到所需的大小。您可以然后使用-drop
将这些新的空白块替换为您想要的图像。
看看我糟糕的ASCII艺术示例:
您有两个图片A.jpg
和B.jpg
,两个图片的尺寸均为256x256
。我们希望将这些并排连接起来以生成512x256
图像。
+---------+ +---------+
| | | |
| A.jpg | | B.jpg |
| | | |
+---------+ +---------+
" Uncrop" A.jpg
达到所需的大小。 -crop
参数是标准的X11几何表示法:WIDTHxHEIGHT + X + Y正X / Y值分别从上/下测量,负值从下/右测量。
jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg
+---------+---------+
| \ |
| O.jpg \ (blank) |
| \ |
+---------+---------+
现在" drop" B.jpg
O.jpg
-drop
参数中的新空白部分jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg
+---------+---------+ +---------+
| \ | | |
| O.jpg \ o<========| B.jpg |
| \ | | |
+---------+---------+ +---------+
仅使用原点X / Y坐标。
O.jpg
完成!您现在拥有一个文件512x256
,其维度为A.jpg
,其中包含B.jpg
和+-------------------+
| |
| O.jpg |
| |
+-------------------+
的连接内容
A.jpg
注意:
B.jpg
和B.jpg
必须具有相同的高度。如果A.jpg
更高,它将被切断。如果A.jpg
更高,则图像的右侧将有一条空白的填充条。B.jpg
的宽度必须以完整的块结尾。 (通常意味着可被8整除?)答案 1 :(得分:-1)
jpegtran
手册页和两个Windows应用(JpegCrop和JpegJoin)相当不错。如果您有特定的程序,请更新您的问题以解释它。
我自己,我已经使用-drop
在公司主页上对JPEG进行无损精灵处理:
http://bestelec.co.uk/images/front/features.jpg
cjpeg
以各种质量选项运行它们,直到找到我感觉舒适的最低质量设置。jpegtran -optimise -progressive -copy none
运行结果,使其尽可能小,并且渐进。最终结果是我将三个HTTP请求减少到一个,允许更早地请求同一主机上的后续资源并改善加载时间。这对我来说是一个更大的胜利,而不是将图像转换为WebP并单独提供它们,特别是考虑到我们的大多数公司访问者都使用IE浏览器。