使用graphicsmagick或imagemagick进行90度图像旋转是否无损

使用graphicsmagick或imagemagick进行90度图像旋转是否无损,imagemagick,image-rotation,graphicsmagick,Imagemagick,Image Rotation,Graphicsmagick,使用graphicsmagick或imagemagick的90度图像旋转是否始终是无损的 例如在做某事时 gm convert -rotate 90 img.img rot90.img.img gm convert -rotate -90 rot90.img.img back.img img.img和back.img是否相等?这一问题的答案更多地取决于您使用的特定图像格式,而不是图像/图形的内部结构(假设它们编写得很好) 对于原始格式(如BMP),没有理由不完全相同 对于无损格式,由于数值精度

使用graphicsmagick或imagemagick的90度图像旋转是否始终是无损的

例如在做某事时

gm convert -rotate 90 img.img rot90.img.img
gm convert -rotate -90 rot90.img.img back.img

img.img和back.img是否相等?

这一问题的答案更多地取决于您使用的特定图像格式,而不是图像/图形的内部结构(假设它们编写得很好)

对于原始格式(如BMP),没有理由不完全相同

对于无损格式,由于数值精度的原因,可能会有一些细微的变化


对于有损格式(如JPEG),几乎可以肯定会有差异。例如,在JPEG的情况下,每个8x8块的压缩都会受到其左侧块的影响-如果旋转图像,则空间关系将发生变化。

这一问题的答案更多地取决于您使用的特定图像格式,而不是图像/图形控件的内部结构(假设它们编写得很好)

对于原始格式(如BMP),没有理由不完全相同

对于无损格式,由于数值精度的原因,可能会有一些细微的变化


对于有损格式(如JPEG),几乎可以肯定会有差异。例如,在JPEG的情况下,每个8x8块的压缩都会受到其左侧块的影响-如果旋转图像,则空间关系将改变。

我不熟悉
.img
文件。如果这是一种无损格式,那么我想/希望您在这个过程中不会丢失任何信息。但如果格式是JPEG,那么最后几乎肯定会有细微的变化。@OliverCharlesworth感谢您的贡献!后缀
img
并不是用来表示某种图像文件类型,而是用来表示所有可能的图像格式。刚刚找到一篇关于EXIF方向和虚拟旋转的文章。我不熟悉
.img
文件。如果这是一种无损格式,那么我想/希望您在这个过程中不会丢失任何信息。但如果格式是JPEG,那么最后几乎肯定会有细微的变化。@OliverCharlesworth感谢您的贡献!后缀
img
并不是用来表示某种图像文件类型,而是用来表示所有可能的图像格式。刚刚找到一篇关于EXIF方向和虚拟旋转的文章。另外,一些格式,如
PNG
嵌入了创建日期和时间,因此,尽管图像像素可能完全相同,就
cmp
diff
而言,元数据可能会使文件不同,因此根据您的问题,“不相等”。“每个8x8块的压缩受其左侧块的影响”可能是最终压缩,但不是量化,而量化正是丢失的地方。可以将JPEG顺时针旋转90°而不丢失,如果两个尺寸都是8的倍数,则可以进行其他无损旋转。此外,一些格式,如
PNG
嵌入了创建日期和时间,因此,尽管图像像素可能一点一点相同,就
cmp
diff
而言,元数据可能会使文件不同,因此根据您的问题,“不相等”。“每个8x8块的压缩受其左侧块的影响”可能是最终压缩,但不是量化,而量化正是丢失的地方。可以将JPEG顺时针旋转90°而不丢失,如果两个尺寸都是8的倍数,则可以进行其他无损旋转。