我的项目有一个用于加载图片的图片框控件,它工作正常。
但是,一些垂直jpg图片在Windows资源管理器中以及我的图片框控件中水平显示 - 使用Photoshop等编辑器打开的同一文件显示垂直方向。
如何在图片框控件中以正确的方向显示图片?
答案 0 :(得分:3)
您需要检查图像并从exif标记中提取方向信息。
您需要做的第一件事就是找一个exif阅读器。例如,在Code Project上用VB.NET编写了一个。
如果您将文件加载到Image
,您将能够从PropertyItems
读取EXIF属性(正如此C#代码所示):
using (Image image = Image.FromFile(imageName))
{
// Non property item properties
this.FileName = imageName;
PixelFormat = image.PixelFormat;
this.Width = image.Size.Width;
this.Height = image.Size.Height;
foreach (PropertyItem pi in image.PropertyItems)
{
EXIFPropertyItem exifpi = new EXIFPropertyItem(pi);
this.propertyItems.Add(exifpi);
}
}
EXIFPropertyItem
是转换PropertyItem
的类。 PropertyItem
的{{1}}是EXIF代码(方向为Id
)。
然后查找Orientation属性并读取它的值。值5,6,7和8用于纵向(垂直)图像,6为旋转90,8为旋转-90。
获得方向后,您可以调用相应的旋转变换以正确的方向显示图像。
答案 1 :(得分:1)
在图片框中显示图像时,将以原始方向显示图像。某些图像编辑应用程序能够检测图像的正确方向并自动旋转它们,但这将是一个相当难以实现的算法。
然而,手动旋转图片框中显示的图像几乎是微不足道的。只需使用.NET Framework提供的System.Drawing.Image.RotateFlip
method,指定要将其旋转的direction。例如,只需要一行代码:
myPictureBox.Image.RotateFlip(RotateFlipType.Rotate180FlipNone)
你也可以逐个像素地进行,相对而言,这可能会更快,但我怀疑如果你一次只旋转一个图像,这是值得的。