像素化的iphone UIImageView



我一直有问题渲染图像与UIImageView类。像素化似乎主要发生在我试图展示的图像的边缘。

我已经尝试改变属性"渲染与边缘抗锯齿",但无济于事。

图像文件包含的图像比屏幕上显示的图像大。

它似乎是在搞乱图像的质量,然后显示它。我试着在这里发布图片,但是StackOverflow拒绝了我的特权。所以这里有一个链接,告诉你发生了什么。

https://i.stack.imgur.com/kuyy7.png

图片中的太阳就是我所说的问题。什么好主意吗?

即时调整图像大小是快速和低质量的。对于捆绑的图像,值得使用额外的捆绑空间来包含缩小的版本。对于下载的图像,在设置图像属性之前,通过将Core Graphics的大小调整为新的UIImage,可以获得更好的效果。

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();

使用以下方法获取特定的 height widthimage

+ (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来为你缩小它。您可能需要手动调整它的大小。这也会提高内存效率。

我使用的分类如下:>>>github link <<<</p>

调整图像大小。

这也为圆角提供了一些其他很好的功能。

还请记住,如果你想旋转图像以避免混叠,则需要在图像边缘设置透明边框。

最新更新