前回のエントリの内容を試行錯誤している間に見つけた方法。ちょっと裏技っぽいけど。
「Exif情報付き画像ファイルから作成したBitmapオブジェクトを複製したものを画像ファイルに保存すると、保存された画像ファイルにはExif情報が付加されない」。
1 2 3 4 5 6 |
string srcFile = @"C:\Temp\Exif test\ff_x_e1_001.JPG"; string dstFile = @"C:\Temp\Exif test\ff_x_e1_001_noExif.JPG"; Bitmap bitmap1 = new Bitmap(srcFile); // 画像ファイル読み込み Bitmap bitmap2 = new Bitmap(bitmap1); // 複製 bitmap2.Save(dstFile, ImageFormat.Jpeg); // 画像ファイル保存 |
保存した画像ファイルにはExif情報は付加されていなかった。想像だけど、元画像ファイルの情報は複製したBitmapオブジェクトに引き継がれないので、元画像ファイルから保存先ファイルにExif情報が転記されないのだと思う。だけど、こういったBitmapクラスの挙動はMSDNなどドキュメントに記載されていないので、将来.NETがバージョンアップしたときには振る舞いが変わっている可能性があるかもしれない。このテクニックの活用には注意が必要だ。