Exif字段ImageDescription添加数据并不完全成功

时间:2013-09-03 05:15:08

标签: c# exif

希望寻求一些帮助。 我正在尝试向Exif字段ImageDescription(270)添加一些文本。我部分成功了。 这是代码

pitem.Id = 270;
  pitem.Type = 2;
      byte[] utf16Bytes = Encoding.Unicode.GetBytes("Testing ImageDescription from command line.");
      byte[] utf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, utf16Bytes);
  pitem.Value = utf8Bytes;//utf16Bytes 
  image.SetPropertyItem(pitem);

然后我将图像副本保存在新路径中,然后我尝试读回刚刚添加的属性。这就是我失败的地方...... :-( 由于某种原因,这个字段不超过6个字符,我已经尝试了很多东西,包括改变数据到UTF-8字节数组,添加空终止符(\ 0),甚至尝试了另一个字段(305),其中存在相同的问题好吧,字段不会超过6个字符..我无法看到正在添加到字段中的全文。有人可以指导..

由于

1 个答案:

答案 0 :(得分:0)

2件事:

(a)查看PropertyItem.Type定义:

  

1:指定Value是一个字节数组。

     

2:指定Value是以null结尾的ASCII字符串。如果设置类型数据   成员为ASCII类型,您应该将Len属性设置为长度   包含空终止符的字符串。例如,字符串   “Hello”的长度为6。

看起来你使用它错了 - 它应该是(1) - 然后你应该保存字节数组,或者它应该是(2) - 但是你需要将ASCII字符串传递给它。

同样看看这个问题:Set image meta data before save

(b)将ptype.Len属性设置为字符串的长度。

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.propertyitem.type.aspx