2010-11-20 68 views
2

我的項目有一個用於加載圖片的圖片框控件,它工作正常。自動旋轉圖片框中的圖片

但是,某些垂直jpg圖片在Windows資源管理器中水平顯示,並且也在我的圖片框控件中 - 使用Photoshop等編輯器打開的同一文件顯示垂直方向。

如何讓圖片在圖片框控件中顯示正確的方向?

回答

3

您需要檢查圖像並從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類。 PropertyItemId是EXIF代碼(方向是0x0112)。

然後查找Orientation屬性並讀取它的值。值5,6,7和8用於縱向(垂直)圖像,6是旋轉90和8,例如旋轉-90。

一旦你有了方向,你就可以調用適當的旋轉變換來以正確的方向顯示圖像。

+0

嗨ChrisF,Cody Gray謝謝你的大力幫助..我只是下載Exif Library類明天我會檢查一下,然後張貼在這裏,再次感謝你的大力幫助 – 2010-11-20 17:26:11

1

當您在圖片框中顯示圖片時,圖片將以其原始方向顯示。某些圖像編輯應用程序能夠檢測圖像的正確方向並自動旋轉它們,但這是一個相當困難的實現算法。

但是,它幾乎微不足道手動旋轉圖片框中顯示的圖像。只需使用由.NET Framework提供的System.Drawing.Image.RotateFlip method,並指定要將其旋轉的即可。例如,只有一行代碼需要:

myPictureBox.Image.RotateFlip(RotateFlipType.Rotate180FlipNone) 

你也可以做到這一點逐像素,這可能變成是快,相對來說,但我懷疑,如果你只是它是值得的一次旋轉一張圖像。

+0

嗨ChrisF,Cody Gray謝謝你的大力幫助..我只是下載Exif圖書館課,明天我會檢查它,然後在這裏發佈,再次感謝您的大力幫助 – 2010-11-20 17:24:07