EXIFデータを失うことなく、.NETを使用して画像のサイズを変更する最適な方法は何ですか? .NET 2 System.Drawing。*クラス、WPFクラス、またはオープンソースライブラリを使用しても問題ありません。EXIFデータを失うことなく.NETで画像のサイズを変更する
このすべてを処理するための唯一の簡単な方法は、Graphics.FromImage(.NET 2)を使用してサイズ変更を実行し、OpenSourceライブラリでEXIFデータを手動で書き直すことです一つずつ)。
EXIFデータを失うことなく、.NETを使用して画像のサイズを変更する最適な方法は何ですか? .NET 2 System.Drawing。*クラス、WPFクラス、またはオープンソースライブラリを使用しても問題ありません。EXIFデータを失うことなく.NETで画像のサイズを変更する
このすべてを処理するための唯一の簡単な方法は、Graphics.FromImage(.NET 2)を使用してサイズ変更を実行し、OpenSourceライブラリでEXIFデータを手動で書き直すことです一つずつ)。
サイズ変更前にEXIFデータを抽出し、EXIFデータを再挿入することをお勧めします。
EXIFデータは、JPEGやTIFFなどのフォーマットでしか定義できません。サイズ変更のためにこのようなイメージをGraphicsオブジェクトにロードすると、基本的にイメージが通常のビットマップに変換されます。したがって、EXIFデータが失われます。
C#hereを使用したEXIF抽出に関する関連スレッド。
わかりました、私は私の解決策を維持して、それは非常にうまくいっていますが、それだけでは何のコードもありません:) – TigrouMeow
私が知っている唯一の他の代替手段はImageMagickです - EXIFデータを失うことなく変換できますが、あなたがすでにやっているのと同じことをやって、おそらくもっと速くなるでしょう。 –
私は魔術.NETを使用して2つの拡張メソッドを作成しました:私はEXIFデータを失うことなく、サイズ変更をフィーチャーし、CodePlexの上のプロジェクトを追加
public static byte[] ToByteArray(this Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
public static Image AttachMetadData(this Image imgModified, Image imgOriginal)
{
using (MagickImage imgMeta = new MagickImage(imgOriginal.ToByteArray()))
using (MagickImage imgModi = new MagickImage(imgModified.ToByteArray()))
{
foreach (var profileName in imgMeta.ProfileNames)
{
imgModi.AddProfile(imgMeta.GetProfile(profileName));
}
imgModified = imgModi.ToImage();
}
return imgModified;
}
を:http://tidytinypics.codeplex.com/ – TigrouMeow