代码之家  ›  专栏  ›  技术社区  ›  Mat

JPEG压缩图像可以在不损失质量的情况下旋转吗?

  •  22
  • Mat  · 技术社区  · 16 年前

    JPEG是一种有损压缩方案,因此解压缩操作-重新压缩通常会进一步降低每一步的图像质量。 是否可以旋转JPEG图像而不会造成进一步的丢失? 从我对JPEG算法所知甚少的情况来看,似乎可以通过一点努力避免进一步的损失。哪些常见的图像处理程序(例如GIMP、Paint Shop Pro、Windows照片库)和图形库在执行旋转时会导致质量损失,哪些不会?

    10 回复  |  直到 14 年前
        1
  •  16
  •   Mike Burton    5 年前

    有一个名为jpegtran的程序

    jpegtran用于在不同JPEG格式之间进行无损转码的实用程序。

    要无损旋转图像,可以执行以下操作:

    $ jpegtran -rotate 180 -perfect -outfile rotated.jpg origin.jpg
    

    Here is a list of applications which provide the JPEG lossless rotation feature based on the IJG code

        2
  •  14
  •   Liggliluff Boojum    6 年前

    是的,在某些情况下是可能的:图像上的90度旋转和翻转。JPEG算法的核心——有损部分——是将图像分割成8x8像素块,执行 discrete cosine transform 然后对结果进行量化。还有一些颜色空间转换和块的无损压缩。

    旋转或翻转8x8块将产生具有相同基本系数的DCT,但可能进行转置和/或根据变换进行一些符号更改。因此,无损旋转或翻转图像的基本步骤包括:

    1. 解压缩并提取块
    2. 使用无损压缩步骤重新压缩所有内容。
        3
  •  12
  •   Andrew Grant    16 年前

    绝对-只需更改EXIF数据中的方向值。绝大多数图像程序将尊重此设置并显示“旋转”的图像。

        4
  •  10
  •   ISW    16 年前

    JPEG FAQ :

    “有一些专门的 可以在JPEG上执行的操作 未解压缩的文件,以及 因此,不必引起 在常规图像编辑器中创建图像。在里面 这是可能的 90度旋转和翻转 无损,如果图像尺寸 是文件块的倍数 尺寸(通常为16x16、16x8或8x8 用于彩色JPEG的像素)。
    ...

        5
  •  2
  •   Assaf Lavie    16 年前

    不是jpg专家,但对于90度、180度、270度旋转,答案似乎是肯定的。(甚至可能是360!:)

        6
  •  2
  •   shoosh    16 年前

    是的,这是可能的。
    谷歌快速搜索给出了这个程序列表 which do this

        7
  •  0
  •   Ketan    16 年前

    如果你说的是旋转JPEG图像,那么就没有进一步的压缩了,对吗?它是关于旋转像素位置的。

    与任何程序进行旋转将潜在地改变中间维度,因为它需要保留原始图像,这可能是一个需要考虑的问题。

        8
  •  0
  •   Hannes Ovrén    16 年前

    至于打开和重新压缩,我不确定你的质量是否会变差,但我也不确定JPEG是如何工作的。

        9
  •  0
  •   mloskot    15 年前

    根据关于 Understanding Digital Image Interpolation

    每次旋转或扭曲图像时也会发生插值。(...) 90°旋转是无损的,因为不需要重新定位像素 位于两个像素之间的边界上(因此被分割)。

    最终以

    需要时,旋转不超过一次。

        10
  •  0
  •   user3094822    10 年前

    http://jpegclub.org/losslessapps.html

    例如,我尝试了FastStone图像查看器、XnView、Photosurfer、JPEG无损旋转器、ExifPro图像查看器。

    经过简单的90°旋转后,它们中没有一个能产生比基本Windows7图片查看器更大的图片。

    推荐文章