2011-10-31 67 views
5

我正在寻找无损jpeg操作(crop n drop = cut and paste)的示例/博客帖子/ etc。我知道有一个程序jpegtran(http://jpegclub.org/jpegtran)可以执行无损裁剪(在某些情况下),但似乎缺乏良好的文档。是的,我试过谷歌。用于JPEG的无损作物n滴(剪切和粘贴)

jpegtran也有一个实验性的分支,允许在某些情况下无损丢弃(=粘贴),但文档似乎更糟糕。

jpegtran的drop开关是实验性的吗?它有没有已知的问题?人们使用它吗?

drop似乎是一个很酷的和有用的功能,我觉得很奇怪,它已经实验了10多年......

是的,可以使用无损格式,如PNG这样的操作,但我特别对JPEG感兴趣。

谢谢!

+0

或者人们意识到其他替代方法可以无损裁剪和粘贴JPEG文件吗? – tdp2110

+0

通常,剪切或复制操作涉及以标准格式将文件读入内存,使其从该点向前自动无损。无损裁剪涉及将裁剪后的图像写回JPEG文件。它对图像大小和作物边界有限制。 –

回答

-1

jpegtran手册页和两个Windows应用程序(JpegCropJpegJoin)都相当不错。如果您正在尝试完成特定的过程,请更新您的问题以解释它。

我自己,我已经使用-drop做JPEG格式的无损拼合对我公司主页:
http://bestelec.co.uk/images/front/features.jpg

  1. 首先,我裁剪的原始照片向下(上像素边界),以涵盖所需的框架。此步骤可以使用非JPEG格式无损保存。 [艺术指导]
  2. 我接下来将这些图像缩小到网页设计所需的宽度。再次,无损保存,因为这些是中间步骤。
  3. 然后,我通过cjpeg以各种质量选项运行它们,直到找到我感到舒服的最低质量设置。
  4. (可选)接下来,我裁剪每个质量较差的单独图像的底部边缘,使其与垂直轴上的倒数第二个MCU边界对齐。这使我可以在没有空白的垂直条上加入照片。我的网页设计不需要一定的高度,所以我可以在这里自由选择。如果组件图像的范围未在MCU边界对齐(因为我的右边缘没有对齐),请确保您使用的是jpegtran/JpegJoin的2012年10月版本,否则只有第一张图像会显示为未裁剪。
  5. 最后,我将这些图像合并为一个jpeg,并通过jpegtran -optimise -progressive -copy none运行结果,使其尽可能小,且渐进。

最终的结果是我已经减少了3个HTTP请求到一个,允许在同一台主机被要求早在后续资源,提高加载时间。这对我来说比将图像转换为WebP并单独提供它们更大,尤其是考虑到我们大多数企业访问者都在使用IE。

+0

你为什么使用精灵的.jpeg图像?据推测,JPEG图像是内容,而不是背景。 https://groups.google.com/forum/#!主题/指南针用户/ NCfZE2mkWJI – ziiweb

+0

@tirengarfio这些JPEG基本上是装饰,而不是内容。 –

+0

@未签署这不是一个很好的理由downvote这个答案。原始问题的提问者似乎知道如何使用“drop”选项,但我不想为它编写文档,无论你想要找多少。 –

3

我花了太多时间试图弄清楚这一点,所以这里希望这可以帮助别人。在Google上搜索有关这种所谓的“裁剪”下拉式功能的文档时,这个问题相当高。

概述:

jpegtran -drop让您在 “水滴” 从一个JPEG块到另一个JPEG。

它只替换现有的块,它不会扩展输入,所以不能连接两个JPEG只与-drop

但是,如果您提供的-crop参数大于输入图像,JPEGTran会写出空白(灰色)块以扩展至所需的大小。你可以用然后-drop用你想要的图像替换这些新的空白块。

看哪,我蹩脚的ASCII艺术例子:

  1. 你有两个图像,A.jpgB.jpg,都具有256x256尺寸。我们想要并排连接这些图像以生成512x256图像。 +---------+ +---------+ | | | | | A.jpg | | B.jpg | | | | | +---------+ +---------+

  2. Un“crop”A.jpg达到所需的尺寸。 -crop参数是标准的X11几何图形表示法:WIDTHxHEIGHT + X + Y正X/Y值分别从顶部/左侧开始测量,从底部/右侧开始测量负值。 jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg +---------+---------+ | \ | | O.jpg \ (blank) | | \ | +---------+---------+

  3. 现在, “滴” B.jpg到新的空白部分O.jpg-drop参数只使用原点X/Y坐标。 jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg +---------+---------+ +---------+ | \ | | | | O.jpg \ o<========| B.jpg | | \ | | | +---------+---------+ +---------+

  4. 完成!你现在有一个文件,O.jpg,与512x256尺寸,包含的A.jpg级联的内容和B.jpg +-------------------+ | | | O.jpg | | | +-------------------+

注:

  • A.jpgB.jpg必须有平等的高度。如果B.jpg更高,它将被切断。如果A.jpg更高,图像的右侧将会有一个空白的填充条。
  • A.jpg必须具有以完整块结束的宽度。 (通常可以被8整除?)
  • B.jpg可能有任何宽度,并且不一定是块大小的倍数。
+0

我认为使用色度二次采样的JPEG文件需要被16或8整除,尽管我可能是错的。这两个文件可能需要具有相同的子采样选项,否则它们将不能正确组合。 –