2

tif ファイルからいくつかのプロパティ タグ項目をクリアしようとしています。
私のテストコードは次のとおりです。

Image sourceImg = new Bitmap("A10034.tif");
Image img = (Image)sourceImg.Clone();
sourceImg.Dispose();

PropertyItem[] propertyItemsList = img.PropertyItems;
foreach (PropertyItem property in propertyItemsList)
{
    if ((property.Id == 270 || property.Id == 271 || property.Id == 272 || property.Id == 305 ||
         property.Id == 315 || property.Id == 316) || (property.Id > 320 && property.Id != 33432))
    {
        img.RemovePropertyItem(property.Id);
    }
}

ImageCodecInfo Encoder = GetEncoderInfo("image/tiff");
EncoderParameters EncoderParams = new EncoderParameters(2);
EncoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (Int64)EncoderValue.CompressionNone);
EncoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
if (System.IO.File.Exists("cleared_A10034.tif"))
{
    System.IO.File.Delete("cleared_A10034.tif");
}
img.Save("cleared_A10034.tif", Encoder, EncoderParams);
img.Dispose();

これは WinXp と Win 8 では機能しますが、Win 7 では機能しません。
宛先ファイルのすべてのタグは、Win7 のソース ファイルと同じです。何も削除しません。
何か案は?
ありがとう。必要に応じて、テスト プロジェクト
をダウンロードできます。

4

1 に答える 1

4

問題が解決しました。
保存する前に画像の回転を追加したところ、すべてが機能するようになりました。

img.RotateFlip(RotateFlipType.Rotate180FlipNone);
img.RotateFlip(RotateFlipType.Rotate180FlipNone);
img.Save("cleared_" + fileName, Encoder, EncoderParams);

奇妙ですが、これは機能します。

于 2013-10-22T23:09:36.517 に答える