在我的应用中,我想要高质量的图像。图像从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;
}
我已多次检查我的代码,但无法弄清楚如何使图像完美。那么,伙计们如何改善这种图像质量? Thanx提前...
答案 0 :(得分:1)
......图像质量下降。
图像的“质量”仍然存在。 (从技术上讲,你通过调整大小来引入一些错误,但这不是真正的问题......)
那么,您想将50x50像素图像缩放到280x280像素吗?源信号中不存在信息/细节。理想情况下,您可以根据要显示的尺寸下载更合适尺寸的图像。
如果这不是一个选项,您可以通过适当的重采样和/或插值来减少像素化。这样可以简化程序放大5.6的像素 - 图像看起来像是像素化和模糊之间的交叉(请参阅CGContextSetAllowsAntialiasing
,CGContextSetShouldAntialias
,CGContextSetInterpolationQuality
和相关的API来完成这使用石英)。