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 倍的像素——然后图像看起来就像像素化和模糊之间的交叉(请参阅CGContextSetAllowsAntialiasingCGContextSetShouldAntialiasCGContextSetInterpolationQuality相关 API 以使用石英完成此操作)。

于 2012-09-26T05:19:05.580 回答