を使用して撮影した写真UIImagePickerController
は、アスペクト比 4:3 です。ただし、全画面の縦横比は 3:2 です。そのため、ギャラリー アプリは、写真を 3:2 の縦横比で表示する魔法を実行しています。全画面表示でズームアウトすると、写真は 4:3 の縦横比で表示されます。誰でもそれがどのように行われるかを明らかにすることができますか? 私はこれについて過去2週間頭を悩ませてきました。
本当に助けてくれてありがとう!!
を使用して撮影した写真UIImagePickerController
は、アスペクト比 4:3 です。ただし、全画面の縦横比は 3:2 です。そのため、ギャラリー アプリは、写真を 3:2 の縦横比で表示する魔法を実行しています。全画面表示でズームアウトすると、写真は 4:3 の縦横比で表示されます。誰でもそれがどのように行われるかを明らかにすることができますか? 私はこれについて過去2週間頭を悩ませてきました。
本当に助けてくれてありがとう!!
4:3 の画像を 3:2 のスペースに合わせるには、高さを一致させるか、幅を一致させることができます。
高さを合わせるなら、4:3 の 3 を 3:2 の 2 に変えます。したがって、画像全体を 2/3 に拡大します。幅と高さを同じ量だけスケーリングするため、スケーリング後の有効な高さは、4:3 の 4 を 2/3 でスケーリングしたもので、8/3 (3 より少し小さい) になります。したがって、画面いっぱいにはなりません。
逆に、幅を合わせると、4:3 の 4 が 3:2 の 3 になります。したがって、画像全体を 3/4 にスケーリングします。幅と高さを同じ量だけ拡大縮小するので、最終的に有効な高さは 4:3 の 3 を 3/4 で拡大縮小して 9/4 (2 より少し大きい) になります。したがって、画面いっぱいに表示するよりも少し大きくなります。
写真アプリが行うように、保存された画像の幅をディスプレイの幅に合わせるために、初期ズームで写真を表示します。保存された画像が 3264x2448 の場合 (iPhone 4S と 5 にあると思います)、iPhone 4s では、ピクセルではなくポイントを使用して、480/3264 の比率でスケーリングされます。これを解決すると、画像の最終的な高さが 360pt に非常に近くなり、画面よりも 40pt 広くなります。
UIKit で言うと、a のUIImage
中に aを入れ、UIScrollView
の初期値zoomScale
を 480/3264 (つまり、約 0.15) に設定することを意味します。スクロール ビューはズームインとズームアウトに役立ちますが、手動で行う作業がまだいくつかあります。たとえば、このチュートリアルを参照してください。aminimumZoomScale
を 320/2448 (つまり、約 0.13) に設定すると、可能な限りズームアウトすると最終的に 4:3 画像全体が画面に表示されるという動作が自動的に得られます。
どのようにして画像を取得したかはわかりませんが、画像の表現の 1 つを取得した可能性があります。これらの表現の 1 つは、フルスクリーン CGImage をすばやく取得するためのもので、もう 1 つは FullResolution を返します。フルスクリーンはデバイスに必要なもの (iPhone4 では 640x960) で、フル解像度は 8MP 画像です。