2013-10-18 77 views
2

我想清除tif文件中的一些屬性標記項。
我的測試代碼:C# - 從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和Windows 8,但沒有在Win 7
在目標文件相同Win7的源文件所有標籤的工作。沒有刪除。
任何想法?
謝謝。
如果需要,您可以下載test project

+0

這裏的答案可能會有所幫助:http://stackoverflow.com/questions/2340337/how-can-i-get-net-to-save-this-image(可能不)。 – Chris

+1

你能上傳你的圖片嗎? – Faraday

+0

我添加了下載測試項目的鏈接(源代碼和tif圖像)。謝謝。 – Igor

回答

4

問題已解決。
我添加圖像旋轉之前保存和現在所有的作品。

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

奇怪的,但這個工程。

+0

提到的方法也適用於我。我無法找到爲什麼房產沒有設置。我嘗試設置值,但也沒有運氣。 RemovePropertyItem可能不會設置對圖像的更改,但其他方法(如RotatateFlip)是。 System.Drawing.Image庫中可能存在的錯誤。 – wonster