2013-03-05 64 views
2

我試圖解決更改Bitmap對象的值ImageDescription的問題。爲文件添加說明。搜索相關主題,我還沒有找到解決方案。圖像屬性的值(C#)

我的代碼:

public Bitmap ImageWithComment(Bitmap image) 
{ 
    string filePath = @"C:\1.jpg"; 
    var data = Encoding.UTF8.GetBytes("my comment"); 
    var propItem = image.PropertyItems.FirstOrDefault(); 
    propItem.Type = 2; 
    propItem.Id = 40092; 
    propItem.Len = data.Length; 
    propItem.Value = data; 
    image.SetPropertyItem(propItem); 
    image.Save(filePath); 
    return image; 
} 

但隨着新的評論圖像不保存在文件夾中((請幫我

+0

後的圖像源相同的文件?這可能是問題。 – 2013-03-05 18:29:00

+0

你有什麼異常嗎? – 2013-03-05 18:31:39

+0

System.ArgumentException:無效的參數。 System.Drawing.Image.get_Width()在System.Drawing.Bitmap .. ctor(圖片圖像)在WallpapersSite.Code.ImageActions.SaveImage(位圖圖像​​) – 2013-03-05 20:17:22

回答

5

根據MSDN - Property Tags你運行後使用下面的號碼使用正確的int值的Id

樣品

using (var image = new Bitmap(@"C:\Desert.jpg")) 
      { 
       string filePath = @"C:\Desertcopy.jpg"; 
       var data = Encoding.UTF8.GetBytes("my comment"); 
       var propItem = image.PropertyItems.FirstOrDefault(); 
       propItem.Type = 2; 
       propItem.Id = 0x010E; // <-- Image Description 
       propItem.Len = data.Length; 
       propItem.Value = data; 
       image.SetPropertyItem(propItem); 
       image.Save(filePath); 
      } 

從MSDN

image description code

代碼,你可以看到它的影響編輯圖像

original

以前

after edit

+0

精彩的例子,非常感謝 – 2013-03-05 18:45:05

+0

我需要改變文件的描述,而不是EXIF。此屬性號碼 - 40092(int)。 – 2013-03-05 20:06:40

+0

propItem.Id = 40092; <===這個工作和改變是我需要的 – 2013-03-05 20:09:27

1

的40092轉化爲0x9C9C的ID據this,這不是一個有效的屬性項ID。 據this

如果圖像格式支持屬性的項目,但不支持 您試圖設置的特定屬性,此方法將忽略嘗試但不會拋出異常的 。

從外觀上看,您希望您的ID爲0x010E。 另請參閱here瞭解每個房產項目ID的詳情。

+0

我需要一個方法來接受對象類型位圖,改變它的屬性(描述)和返回對象類型位圖 – 2013-03-05 20:26:43