JPEG是一种有损压缩方案,因此解压缩 - 操作 - 重新压缩通常会进一步降低每一步的图像质量。 是否可以旋转JPEG图像而不会造成进一步的损失?从我对JPEG算法的了解很少,它似乎可以通过一些努力避免进一步的损失。哪些常见的图像处理程序(例如GIMP,Paint Shop Pro,Windows照片库)和图形库在执行旋转时会导致质量损失而哪些不会?
答案 0 :(得分:14)
有一个名为jpegtran的程序
jpegtran - 用于在不同JPEG格式之间进行无损转码的实用程序。
要无损旋转图像,您可以执行以下操作:
$ jpegtran -rotate 180 -perfect -outfile rotated.jpg origin.jpg
答案 1 :(得分:11)
绝对 - 只需更改EXIF数据中的方向值即可。绝大多数图像程序都会遵循此设置并将图片显示为“旋转”。
如果某些标准为真,也可以“手动”(例如以编程方式)以无损方式旋转图像 - 旋转必须为90/180度,宽度/高度必须是块大小的倍数。你也可以翻转/镜像它。我不知道图像程序是否足够聪明,特殊情况下这个操作。我猜不会。
答案 2 :(得分:9)
来自JPEG FAQ:
“有一些专门的 可以在JPEG上完成的操作 文件没有解压缩,和 因此,没有招致 你通常会发生的世代损失 从加载和重新保存得到 常规图像编辑器中的图像。在 特别有可能做到 90度旋转和翻转 无损,如果图像尺寸 是文件块的倍数 大小(通常为16x16,16x8或8x8 彩色JPEG的像素。) ...
但你需要特殊的软件;在常规图像编辑器中旋转图像不会是无损的。“
答案 3 :(得分:9)
是的,某些情况可能:90度旋转和翻转图像。 JPEG算法的核心 - 有损部分 - 涉及将图像分成8x8像素块,在块上执行discrete cosine transform,然后量化结果。在此之上还有一些色块空间转换和块的无损压缩。
旋转或翻转8x8块将使DCT具有相同的基本系数,但可能转换和/或根据转换而改变一些符号。因此,无损旋转或翻转图像的基本步骤包括:
答案 4 :(得分:2)
不是jpg专家,但似乎90,180,270度旋转的答案是肯定的。 (甚至可能是360!:))
答案 5 :(得分:2)
是的,有可能。
快速谷歌搜索提供了这个程序列表which do this
答案 6 :(得分:1)
根据Sean McHugh关于Understanding Digital Image Interpolation的优秀文章:
每次旋转或扭曲图像时也会发生插值。 (......) 90°旋转是无损的,因为不需要重新定位像素 到两个像素之间的边界(因此划分)。
最终以
结束尽可能避免旋转照片;如果是一张不平的照片 需要它,旋转不超过一次。
答案 7 :(得分:0)
如果您正在谈论旋转JPEG图像,那么没有进一步压缩吗?它是关于旋转像素位置。
对任何程序进行旋转都可能会改变中间尺寸,因为它需要保留原始图像,这可能是一个需要考虑的问题。
答案 8 :(得分:0)
除非您旋转90度的倍数,否则您的图像必须执行某种插值,这可能会降低图像的质量。使用良好的插值算法将有助于此。
至于打开和重新压缩,我不确定你的质量会不会更差,但后来我不确定JPEG的工作原理。
我建议您尝试压缩,操作和重新压缩,如果结果足够好,请自行查看。什么是好的,取决于你的申请。
答案 9 :(得分:0)
如果可以提供帮助:
尝试做得比Microsoft(Windows 7)本机图片查看器及其右键单击旋转选项更好,我尝试了以下链接的多个应用程序:http://jpegclub.org/losslessapps.html
例如,我尝试过FastStone Image Viewer,XnView,Photosurfer,JPEG Lossless Rotator,ExifPro Image Viewer。
在简单的90°旋转后,它们中的任何一个都比基本的Windows 7图片查看器产生更大的画面。 可以肯定的是,它的结论如此之快,但我目前还没有找到真正的无损旋转.jpeg应用程序,而且无论如何都不比内置的Windows更好。