画像に完全に依存するアプリに取り組んでいます。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 ディスプレイ用に同じ画像を作成できますか?
より良い解決策はありますか?