有人告诉我一些像jpg这样的图像文件只是使用一些位来控制旋转状态。
有没有办法在不将图片文件加载到主内存的情况下更改此状态
答案 0 :(得分:4)
可以标记JPG文件以更改其显示方式,而无需将JPG图像加载和解码为内存中位图。 JPG图像文件可以选择包括EXIF元数据部分,通常用于描述创建或捕获图像所涉及的设备和环境 - 相机型号,快门速度,等效ISO曝光等。
EXIF元数据还包括一个Orientation标志,可用于通知图像查看器应用程序JPG图像的像素应如何在显示表面上定向。可以在JPG文件中读取和写入该方向标志(和EXIF元数据),而不加载或解码像素图像数据。这也意味着可以多次更改方向而不会丢失图像细节,因为图像没有被解压缩,旋转,然后重新压缩到磁盘上的新文件中。
为此,您需要C#代码来读取JPG文件的JFIF文件格式,并查找并解压缩EXIF部分。我不认为内置的.NET Image阅读器提供类似的东西。
请注意,并非所有JPG读者都尊重EXIF方向标志。我相信Windows内置的Image Preview应用程序会尊重当前版本的Windows中的EXIF方向标记,但在早期的Windows版本(例如Windows XP)中却没有。
此处有关EXIF方向标记的更多信息:http://jpegclub.org/exif_orientation.html