ところが、ImageIOで作成したアニメーションGIFをTwitterアプリで投稿しようとすると静止画としてしか認識してくれません。
原因を調べたところ、ImageIOで作ったアニメーションGIFは、ヘッダーに"GIF87a"と設定されていました。アニメーションGIFは"GIF89a"で拡張されたため、Twitter側で"GIF89a"でないとアニメーションGIFと認識してくれないようです。
ImageIOで作ってもブラウザやメール添付ではちゃんとアニメーションするので、ちょっと強引ですがデータ内の"GIF87a"を"GIF89a"に書き換えてみたところ、Twitterでも認識してくれるようになりました。
こんな感じで変更しました。
// ヘッダーの'7'を'9'に変更
NSMutableData *gif89aData = [NSMutableData dataWithData:gif87Data];
char gif89a = '9';
[gif89aData replaceBytesInRange:NSMakeRange(4, 1) withBytes:&gif89a];
参考)
iOS で ImageIO を使ってアニメーションGIFファイルを生成してみる
GIFフォーマットの詳細
0 件のコメント:
コメントを投稿