写真投稿iPhoneアプリ PictShare v3.2.1 を公開しました – 標準写真アプリのトリム対応など

iOS5になってからずっと先延ばしにしていた問題にようやく対応しました。

変更点

  • [Twitter] API v1.1に対応
  • [SugarSync] 新認証方式に対応
  • 写真アプリでのトリミングが反映されない問題を修正

今回のメインは標準写真アプリでのトリミング対応になります。iOS5から標準の写真アプリで簡単な編集ができるようになりました。

こういう感じのやつですね。

ここで編集した写真をPictShare経由で送信すると元の画像が送られてしまうっていう問題だったんですが、それにようやく対応しました。(技術的な話は後述)

現在の対応サービスはこんな感じです。

  1. DropBox
  2. Evernote
  3. Facebook
  4. Flickr
  5. mixi
  6. Picasa
  7. Posterous
  8. SmugMug
  9. SugarSync
  10. Tumblr
  11. Twitter
    1. Twitter公式
    2. Twitpic
    3. yfrog
    4. Lockerz
    5. Mobypicture
    6. TwitVid
    7. ついっぷるフォト
  12. YouTube
  13. はてなフォトライフ
  14. フォト蔵
  15. メール(直接メール送信)

審査期間はだんだん短くなっているようです。公式アナウンスとしても8営業日から7営業日に減っていていい傾向ですね。

  1. 11/4 提出
  2. 11/10 4:17 in review
  3. 11/10 7:48 審査通過

みなさん是非お使いくださいませ。

技術的なお話

たまには技術的なお話でも書いておきましょう。

標準写真アプリでのトリミングはオリジナル画像を直接編集するのではなく、メタデータを編集するだけの仕様になっています。これは実際にMacのプレビュー.appなどをつかってiPhoneから写真を吸い出すとわかるのですが、トリミングしたはずの写真でも、オリジナルの写真がそのまま取り出せてしまいます。

iOSのAPI的にはUIImagePickerを使うと編集後の写真にアクセスできますが、AssetsLibrary経由ではオリジナル画像になってしまいます。

これについて一度バグ報告を上げたことがあるのですが、その回答は「メタデータを見てくれ」と言うものでした。

ちなみにこのメタデータ。XMPっていうフォーマットでして、アドビが制定している仕様に基づいています。

Extensible Metadata Platform – Wikipedia

これは、実際にトリミングしたはずの元画像をバイナリエディタなんかで開くと確かに中にXMLが埋まっているのが確認できます。

XMPについてはSDKが提供されているので、それ経由で読み書きが可能です。

Adobe – XMP Developer Center | Adobe Developer Connection

が、それ、面倒くさいな〜と思って今まで先延ばしになっていたのでした。

ところがよくみてみると、AssetsLibraryの [ALAssetRepresentation metadata] で取得できるデータ群の中に @”AdjustmentXMP” という項目があるではないですか!ここにまさに上述のXML文字列がそのまま埋まっていたのです。

そんなこんなで、XMLは無事に取得できまして、各項目を取り出して、それを元にトリムを再現して(これまた画像の回転とからんで結構ややこしかった)、、、と、対応することができました。

というわけでちょっとしたメモでした。