私のプロジェクトにはピクチャをロードするためのピクチャボックスコントロールがあり、うまくいきます。ピクチャインピクチャボックス内のピクチャを自動回転
しかし、いくつかの垂直のJPG写真は私のPictureBoxコントロールに水平にWindowsのエクスプローラでも示されている - 同じファイルがPhotoshopは垂直方向を示し似のエディタを使用して開かれました。
は、どのように私は絵がPictureBoxコントロールに正しい向きで表示するように得ることができますか?
私のプロジェクトにはピクチャをロードするためのピクチャボックスコントロールがあり、うまくいきます。ピクチャインピクチャボックス内のピクチャを自動回転
しかし、いくつかの垂直のJPG写真は私のPictureBoxコントロールに水平にWindowsのエクスプローラでも示されている - 同じファイルがPhotoshopは垂直方向を示し似のエディタを使用して開かれました。
は、どのように私は絵がPictureBoxコントロールに正しい向きで表示するように得ることができますか?
イメージを調べ、exifタグから方向情報を抽出する必要があります。
あなたがする必要がありますまず最初に、EXIFリーダーを取得することです。たとえば、Code ProjectにVB.NETで書かれたものがあります。
あなたはImage
にファイルをロードする場合は、PropertyItems
からEXIFのプロパティを読み取ることができるようになります(このC#のコードが示すように):EXIFPropertyItem
はPropertyItem
を変換するクラスです
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);
}
}
。 PropertyItem
のId
はEXIFコード(オリエンテーションは0x0112
)です。
次に、Orientationプロパティを探し、その値を読み取ります。値5,6,7および8は、縦(縦)画像用であり、6は90°回転し、8は回転する-90などである。
あなたが方向性を持ってたら、あなたは正しい向きで画像を表示するために、適切な回転変換を呼び出すことができます。
あなたは、ピクチャボックスに画像を表示すると、それが元の向きで表示されます。特定の画像編集アプリケーションは、画像の正しい方向を検出して自動的に回転させることができますが、実装するのはかなり難しいアルゴリズムです。
しかし、ほとんど手に入らないのはです。画像を画像ボックスに表示します。 .NET Frameworkによって提供されるSystem.Drawing.Image.RotateFlip
methodを使用して、回転させたいを指定してください。例えば、コードの1行だけ必要:
myPictureBox.Image.RotateFlip(RotateFlipType.Rotate180FlipNone)
あなたはまた、それが画素ごと速く、比較的話すことが判明するかもしれませんが、行うことができますが、私はあなただけなら、それはそれを価値が疑います一度に1つの画像を回転させる。
こんにちはChrisF、私はちょうどExif Libraryクラスをダウンロードしています。明日はそれをチェックしてここに投稿します –
こんにちはChrisF、コーディーグレイはあなたの大きな助けを感謝します。私はちょうどExifライブラリクラスをダウンロードしています。私はそれをチェックし、あなたの偉大な助けにもう一度感謝します。 –