1

サイズ変更の終了時に画像のメタデータを設定しようとしています。プロパティは設定されているように見えますが、保存後に何もありません。

私は何か愚かなことをしていると確信しています。

var pi = createPropertyItem();

pi.Id = 40091;
pi.Len = "SomeText".Length;
pi.Type = 2;
pi.Value = Encoding.UTF8.GetBytes("SomeText");
SrcImage.SetPropertyItem(pi);
SrcImage.Save(@"C:\temp\withTag.jpg");

private PropertyItem createPropertyItem()
{
   var ci = typeof (PropertyItem);
   var o = ci.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance |    BindingFlags.Public , null, new Type[] {} , null);

    return (PropertyItem)o.Invoke(null);
}
4

1 に答える 1

0

まあ、いくつかのテストの後、これは機能します...ただし、プロパティ 40091 が元の画像に存在しない場合のみです。存在する場合は、置き換えられません (理由がわからないことを認めなければなりません)。

 var image = Image.FromFile(@"C:\Tools\test.jpg");
 var propertyItem = createPropertyItem();
 var text = "awe" + char.MinValue;//add \0 at the end of your string
 propertyItem = createPropertyItem();
 propertyItem.Id = 40091;
 propertyItem.Value = Encoding.Unicode.GetBytes(text);//change to Unicode
 propertyItem.Len = propertyItem.Value.Length;
 propertyItem.Type = 1;//it's not type 2 !
 image.SetPropertyItem(propertyItem);
 image.Save(@"C:\Tools\test2.jpg");
于 2012-07-09T13:55:10.880 に答える