強火で進め

このブログではプログラム関連の記事を中心に書いてます。

iOS SDK 7でImageIO Frameworkを使ってExif情報にユーザコメントを書き込む時は注意が必要

以前書いたこちらの記事iOS 7だと設定したコメントが途中で途切れてしまうという情報をコメント欄にて頂きました。

自分でも確認して見たところ、iOS SDK 6までは正しく動作するのですがiOS SDK 7からは正しく動作しないようです。

具体的には英語と日本語が混在している時に途中で途切れた状態で設定されてしまいます。
「テストabc」と指定しても「テスト」になり、「abcテスト」と指定しても「abc」と成りました。

Exif 2.2規格を確認した所、ユーザコメント(ImageIO Frameworkでは kCGImagePropertyExifUserComment で指定)に指定する文字コードはASCII、JIS、Unicode(UTF-16)、非設定(この場合には各地域のPC依存の言語、日本だとSJIS)のいずれかの設定可能みたいです。

最初の文字が英語の場合にはASCIIが指定され、最初の文字がUnicodeの場合にはUnicodeが指定されていました。

ASCIIが指定されてる方は完全にダメダメですがUnicodeが指定されている方は正しく動作しそうに思えます。

しかし、実際にはバイナリエディタで該当部分のデータを確認してみると英語の部分は削除されたかの様にまったく存在しませんでした。

結論

iOS SDK 7でImageIO Frameworkを使ってExif情報にユーザコメントを書き込む事は「日本語のみ」か「英語のみ」が保証されている場合のみ使用し、混在する可能性が有る場合には使ってはダメ。