0

助けを求めることを願っています。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 文字を超えません.. フィールドに追加されている全文を見ることができません. 誰かガイドできますか..

ありがとう

4

1 に答える 1

0

2つのこと:

(a) PropertyItem.Type定義を見てください。

1: Value がバイトの配列であることを指定します。

2: Value が NULL で終わる ASCII 文字列であることを指定します。型データ メンバーを ASCII 型に設定する場合は、Len プロパティを null ターミネータを含む文字列の長さに設定する必要があります。たとえば、文字列「Hello」の長さは 6 です。

間違って使用しているように見えます-(1)である必要があります-次に、バイト配列を保存するか、(2)である必要があります-しかし、ASCII文字列をそれに渡す必要があります。

この質問も見てください:保存前に画像メタデータを設定してください

(b) ptype.Len プロパティを文字列の長さに設定します。

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

于 2013-09-03T05:23:27.393 に答える