iOSでは写真アルバムからの画像を選び出す手段としてイメージピッカー UIImagePickerControllerクラスを提供しています。
iPad上では,これをPopoverというUIで使用しなさいという条件が付いています。ボタンを押すと現れる吹き出しのようなインターフェイスがPopoverです。
Popoverの横幅は320ピクセルとされていて,これはiPhoneの横幅と同じなので,テーブルビューなどをそのまま持ってきてPopover内に表示することができます。Popover内がiPhoneアプリのように見えるのも当然です。
--
ところで,イメージピッカーで写真を選択する場合,範囲選択の編集をさせることができます。allowsEditingプロパティをYESにすれば,選択後に拡大縮小と範囲を移動させる画面が用意されます。
そして,ピックアップした画像をおさめたNSDictionary型からUIImagePickerControllerEditedImageをキーとして編集結果を取り出すという手順になります。ちなみに,UIImagePickerControllerOriginalImageをキーにすると編集されてないオリジナル画像が取り出せます。
ところが,この方法を素朴に採用すると横幅最大320ピクセルの画像しか取り出せず,それを拡大するとぼやけてしまいます。
というのもイメージピッカーがPopoverの中でしか使えないためです。Popoverの大きさを拡大すれば,原理的にはイメージピッカーの切り抜きサイズも大きくなるはずですが,残念ながらPopoverは,縦方向はともかく,横方向は320ピクセルに制限されているため,数値を大きく指定して引き伸ばしてもすぐに幅320ピクセルへ縮んでしまいます。
--
iPadでイメージピッカーを使用して,大きなサイズの画像を切り抜けないのかというと,そうでもありません。
幸い,イメージピッカーはオリジナル画像とともに切り抜こうとした矩形範囲の座標をUIImagePickerControllerCropRectキーで教えてくれるのです。
であれば,こちらでオリジナル画像を切り抜けば良いだけのこと。画像の切り抜き方法は,ググるとあれこれ出てきますので,それを参考にしましょう。
ところが,うまく切り抜いてアプリも動いているにもかかわらず,処理を繰り返していると頻繁に「落ちる」。メディアを自在に閲覧できるiPadがどうして?と訝しく思えるのですが,どうも画像を保持するUIImageViewでは1024ピクセル以上の画像を扱わないで欲しいらしい。かなりメモリにシビアなのが現状です。
というわけで,切り抜いた画像を1024ピクセル以内にリサイズすることにして,やっと問題が解消しそうです。