2010-11-20 32 views
2

私のプロジェクトにはピクチャをロードするためのピクチャボックスコントロールがあり、うまくいきます。ピクチャインピクチャボックス内のピクチャを自動回転

しかし、いくつかの垂直のJPG写真は私のPictureBoxコントロールに水平にWindowsのエクスプローラでも示されている - 同じファイルがPhotoshopは垂直方向を示し似のエディタを使用して開かれました。

は、どのように私は絵がPictureBoxコントロールに正しい向きで表示するように得ることができますか?

答えて

3

イメージを調べ、exifタグから方向情報を抽出する必要があります。

あなたがする必要がありますまず最初に、EXIFリーダーを取得することです。たとえば、Code ProjectにVB.NETで書かれたものがあります。

あなたはImageにファイルをロードする場合は、PropertyItemsからEXIFのプロパティを読み取ることができるようになります(このC#のコードが示すように):EXIFPropertyItemPropertyItemを変換するクラスです

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); 
    } 
} 

PropertyItemIdはEXIFコード(オリエンテーションは0x0112)です。

次に、Orientationプロパティを探し、その値を読み取ります。値5,6,7および8は、縦(縦)画像用であり、6は90°回転し、8は回転する-90などである。

あなたが方向性を持ってたら、あなたは正しい向きで画像を表示するために、適切な回転変換を呼び出すことができます。

+0

こんにちはChrisF、コーディーグレイはあなたの大きな助けを感謝します。私はちょうどExifライブラリクラスをダウンロードしています。私はそれをチェックし、あなたの偉大な助けにもう一度感謝します。 –

1

あなたは、ピクチャボックスに画像を表示すると、それが元の向きで表示されます。特定の画像編集アプリケーションは、画像の正しい方向を検出して自動的に回転させることができますが、実装するのはかなり難しいアルゴリズムです。

しかし、ほとんど手に入らないのはです。画像を画像ボックスに表示します。 .NET Frameworkによって提供されるSystem.Drawing.Image.RotateFlip methodを使用して、回転させたいを指定してください。例えば、コードの1行だけ必要:

myPictureBox.Image.RotateFlip(RotateFlipType.Rotate180FlipNone) 

あなたはまた、それが画素ごと速く、比較的話すことが判明するかもしれませんが、行うことができますが、私はあなただけなら、それはそれを価値が疑います一度に1つの画像を回転させる。

+0

こんにちはChrisF、私はちょうどExif Libraryクラスをダウンロードしています。明日はそれをチェックしてここに投稿します –

関連する問題