我在使用 UIImageView 类渲染图像时遇到问题。像素化似乎主要发生在我试图显示的图像的边缘。
我尝试更改属性“使用边缘抗锯齿渲染”无济于事。
图像文件包含比屏幕上显示的更大的图像。
它似乎对图像的质量非常混乱,然后显示它。我试图在这里发布图片,但 StackOverflow 拒绝了我的这一特权。所以这是一个链接到正在发生的事情。
http://i.imgur.com/QpUOTOF.png
这张图片中的太阳就是我所说的问题。有任何想法吗?
我在使用 UIImageView 类渲染图像时遇到问题。像素化似乎主要发生在我试图显示的图像的边缘。
我尝试更改属性“使用边缘抗锯齿渲染”无济于事。
图像文件包含比屏幕上显示的更大的图像。
它似乎对图像的质量非常混乱,然后显示它。我试图在这里发布图片,但 StackOverflow 拒绝了我的这一特权。所以这是一个链接到正在发生的事情。
http://i.imgur.com/QpUOTOF.png
这张图片中的太阳就是我所说的问题。有任何想法吗?
动态图像大小调整速度快且质量低。对于捆绑的图像,值得额外的捆绑空间来包含缩小的版本。UIImage
对于下载的图像,您可以通过在设置图像属性之前使用 Core Graphics 调整大小来获得更好的结果。
CGSize newSize = CGSizeMake(newWidth, newHeight);
UIGraphicsBeginImageContextWithOptions(newSize, // context size
NO, // opaque?
0); // image scale. 0 means "device screen scale"
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
[bigImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
使用以下方法获取图像的特定高度和宽度
+ (UIImage*)resizeImage:(UIImage*)image withWidth:(int)width withHeight:(int)height
{
CGSize newSize = CGSizeMake(width, height);
float widthRatio = newSize.width/image.size.width;
float heightRatio = newSize.height/image.size.height;
if(widthRatio > heightRatio)
{
newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio);
}
else
{
newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio);
}
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
此方法返回NewImage,具有您指定的特定大小。
你的图像有多大,imageView 的大小是多少?不要依赖 UIImageView 为你缩小它。您可能需要手动调整它的大小。这也会更节省内存。