0

私のアプリでは、高品質の画像が必要です。画像は Facebook の友達リストから読み込まれます。その画像が小さいサイズ (50 * 50) で読み込まれると、その品質は問題ありません。しかし、その画像をより大きなサイズ(280 * 280)で取得しようとすると、画像の品質が低下します。

ここに画像の説明を入力

丸い角 m の場合、次のようにします。

self.mImageView.layer.cornerRadius = 10.0;
self.mImageView.layer.borderColor = [UIColor blackColor].CGColor;
self.mImageView.layer.borderWidth = 1.0;
self.mImageView.layer.masksToBounds = YES;  

次のコードを使用して画像 m を取得する場合:

self.mImageView.image = [self  imageWithImage:profileImage scaledToSize:CGSizeMake(280, 280)];

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, YES,0.0);
CGContextRef context = CGContextRetain(UIGraphicsGetCurrentContext());
CGContextTranslateCTM(context, 0.0, newSize.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetInterpolationQuality(context, kCGInterpolationLow);
CGContextSetAllowsAntialiasing (context, TRUE);   
CGContextSetShouldAntialias(context, TRUE);
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, newSize.width, newSize.height),image.CGImage);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
return newImage;

}

コードを何度かチェックしましたが、画像を完璧にする方法がわかりませんでした。では、この画質はどのように改善されるのでしょうか。事前にサンクス...

4

1 に答える 1

1

…画質低下。

画像の「品質」はまだ存在します。(技術的には、サイズを変更することで少量のエラーが発生しますが、それは本当の問題ではありません…)

では、50x50px の画像を 280x280px に拡大したいですか? 情報/詳細はソース信号には存在しません。理想的には、表示したいサイズに対して、より適切なサイズの画像をダウンロードします。

それができない場合は、適切なリサンプリングや補間によってピクセル化を減らすことができます。これは、プログラムが 5.6 倍に拡大するピクセルを単純に滑らかにします。画像は、ピクセル化されたものとぼやけたもののクロスのように見えます (クォーツを使用してこれを実現するにはCGContextSetAllowsAntialiasing、 、CGContextSetShouldAntialiasCGContextSetInterpolationQualityおよび関連する API を参照してください)。

于 2012-09-26T05:19:05.580 に答える