1

画像に完全に依存するアプリに取り組んでいます。320*480 のような画像がありますが、768*1024 のサイズの同じ画像が必要です。UI デザイナーで入手してバンドルに入れることができますが、私のアプリケーションはユニバーサル アプリ用なので、iPhone retina、iPad、iPad retina 用に同じイメージを含める必要がありました。複数の画像を使用している場合、IPA サイズが増加します (例: 320*480 の画像が 200KB の場合、768*1024 を再度追加すると、IPA のサイズは少なくとも 200KB に増加します)。

アイデア: 320*480 の画像のみを配置し、768*1024 の画像をプログラムで作成する予定です。つまり、バンドルで使用する画像のセットは 1 つだけです。

作業完了:いくつかのブログを調べたところ、以下のコードを使用して必要な画像サイズを作成できることがわかりました。

- (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}


UIImage *smallImage=[UIImage imageNamed:@"1.png"];
    UIImage *bigImage=[self scale:smallImage  toSize:CGSizeMake(768, 1024)];
    [UIImageJPEGRepresentation(bigImage,2.0) writeToFile:[[self applicationDocumentsDirectory]stringByAppendingPathComponent:@"upload.png"]  atomically:YES];

問題:上記のコードはクールに動作し、イメージの予想されるサイズを取得しますが、唯一の問題は、最後のイメージでピクセルの歪みが発生することです。

質問: 小さな画像から歪みのない画像を取得するための適切で効率的な解決策はありますか、または UI デザイナーからすべての画像を取得する必要があります。通常の画像がある場合、Retina ディスプレイ用に同じ画像を作成できますか?

より良い解決策はありますか?

4

3 に答える 3

4

歪みやピクセル化なしに、小さな画像から大きな画像を作成することは不可能です。追加の詳細を魔法のように埋める方法はありません。

現実の世界は、テレビや映画のように人々が画像を拡大して、魔法のように多くの詳細を捉えることはできません。:)

次の 5 セットの画像を含めると、アプリが大きすぎると思われる場合:

  1. iPhone 3.5" 非網膜
  2. iPhone 3.5" 網膜
  3. iPhone 4" 網膜
  4. iPad 非網膜
  5. iPadの網膜

次に、いくつかのオプションがあります。

  1. 2 つのアプリを作成します。1 つは iPhone と iPod touch 用、もう 1 つは iPad 用です。
  2. 画像の小さなサブセットのみを使用してアプリを出荷します。その後、アプリを初めて実行すると、アプリは現在のデバイスに必要なイメージのみをダウンロードできます。
  3. 最大の画像のみを含めます。アプリは各画像を必要とするため、適切なサイズの画像を作成して使用できます。各変換は、画像ごとに 1 回だけ行う必要があります。画像を縮小すると、拡大しようとするよりもはるかに良い結果が得られます。
于 2013-03-23T15:37:52.567 に答える
0

必要に応じて、大きな画像から切り抜きと縮小を行うことができますが、拡大すると、ファイルにこれらすべてのピクセルに関する十分な情報が含まれていないため、品質が低下します。私はどちらかを提案します:

1)最も簡単な方法は、さまざまなバージョンの画像を作成することです。(rmaddyの答えを参照してください)。

2)本当に複数の画像が必要ない場合は、最大の画像を使用して縮小します。アスペクト比が異なるため、単にスケーリングすると歪みが発生します。同様にトリミングする必要があります。

いずれにせよ、画像エディタを開いて、より大きな画像を作成する必要があります。

于 2013-03-23T16:26:08.210 に答える