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