0

私は現在、ファイル/画像用に統合されたビューアを備えた「ドロップボックス」のようなアプリに取り組んでいます。

問題: ユーザーが非常に高解像度の画像をサーバーに保存し、それをデバイスで表示しようとすると、アプリがクラッシュします。

例: 12000x4000 px のパノラマ写真。このイメージを縮小する方法はありますか (クライアント - iOS - 側)?

現時点では、このクラスを使用しています: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

しかし、300MBを超えるメモリを使用しない方法を見つける必要があります...

4

3 に答える 3

5

サーバーを制御する場合は、サーバー側で行います。640x960 で表示するためだけに 12000x4000 の画像を 3G 経由でダウンロードしたくありません。

于 2011-06-09T15:57:39.967 に答える
1

Googleマップが大きな画像を処理するのと同じ方法でこの画像を処理することを検討する必要があります。CATiledLayerの上に画像タイリングの王様を行うことで、AppleのドキュメントのPhotoScrollerの例を確認してください。

于 2011-06-17T12:06:10.697 に答える
1

Apple サンプル コード プロジェクトのLarge Image Downsizingを確認してください。CATiledLayer とは異なり、実際には、iOS ローカル ディスク上の大きなイメージから新しい小さなイメージをメモリ内に作成します。CATiledLayer を完全にズームアウトすると、表示するために必要なソース イメージ全体のデコードが試行されます。

ただし、この手法ではソース イメージが全幅の帯域で縮小されるため、全体が一度にメモリに読み込まれることはありません。TIFF、JPEG、PNG に対応しています。BMP、GIF、インターレース画像はサポートされていません。

ReadMe に記載されているように、ソース イメージはアプリ バンドル、フォト ロール、またはその他の場所 (ダウンロードされた OTA など) に存在する可能性があります。

于 2012-05-03T15:57:24.350 に答える