我的項目有一個用於加載圖片的圖片框控件,它工作正常。自動旋轉圖片框中的圖片
但是,某些垂直jpg圖片在Windows資源管理器中水平顯示,並且也在我的圖片框控件中 - 使用Photoshop等編輯器打開的同一文件顯示垂直方向。
如何讓圖片在圖片框控件中顯示正確的方向?
我的項目有一個用於加載圖片的圖片框控件,它工作正常。自動旋轉圖片框中的圖片
但是,某些垂直jpg圖片在Windows資源管理器中水平顯示,並且也在我的圖片框控件中 - 使用Photoshop等編輯器打開的同一文件顯示垂直方向。
如何讓圖片在圖片框控件中顯示正確的方向?
您需要檢查圖像並從exif標籤中提取方向信息。
你需要做的第一件事就是獲得一個exif閱讀器。例如,有一個用VB.NET編寫的Code Project。
如果您將文件加載到一個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
的Id
是EXIF代碼(方向是0x0112
)。
然後查找Orientation屬性並讀取它的值。值5,6,7和8用於縱向(垂直)圖像,6是旋轉90和8,例如旋轉-90。
一旦你有了方向,你就可以調用適當的旋轉變換來以正確的方向顯示圖像。
當您在圖片框中顯示圖片時,圖片將以其原始方向顯示。某些圖像編輯應用程序能夠檢測圖像的正確方向並自動旋轉它們,但這是一個相當困難的實現算法。
但是,它幾乎微不足道手動旋轉圖片框中顯示的圖像。只需使用由.NET Framework提供的System.Drawing.Image.RotateFlip
method,並指定要將其旋轉的即可。例如,只有一行代碼需要:
myPictureBox.Image.RotateFlip(RotateFlipType.Rotate180FlipNone)
你也可以做到這一點逐像素,這可能變成是快,相對來說,但我懷疑,如果你只是它是值得的一次旋轉一張圖像。
嗨ChrisF,Cody Gray謝謝你的大力幫助..我只是下載Exif圖書館課,明天我會檢查它,然後在這裏發佈,再次感謝您的大力幫助 – 2010-11-20 17:24:07
嗨ChrisF,Cody Gray謝謝你的大力幫助..我只是下載Exif Library類明天我會檢查一下,然後張貼在這裏,再次感謝你的大力幫助 – 2010-11-20 17:26:11