像素化的 iPhone UIImageView

3
我一直在使用UIImageView类渲染图片时遇到问题。像素化似乎主要发生在我尝试显示的图像边缘。
我尝试更改“使用边缘抗锯齿渲染”属性,但没有效果。
图像文件包含比屏幕上显示的图像更大的图像。
它似乎严重影响图像的质量,然后再显示出来。我试图在这里发布图像,但StackOverflow拒绝了我这个特权。因此,这里是正在发生的情况的链接。

http://i.imgur.com/QpUOTOF.png

这张图片中的太阳是我所说的问题。有什么想法吗?

当您指定的框架属性(特别是原点)不是整数时,此类问题可能会发生在UI元素中。尝试在指定图像视图框架时使用(int)进行强制转换。 - dalton_c
4个回答

7

即时图片调整大小快速且质量较低。 对于捆绑的图像而言,值得多花一些捆绑空间来包含缩小版本。对于下载的图像,您可以通过使用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();

3

使用以下方法获取图像的特定高度宽度

+ (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。请按照要求严格保留HTML标记。

0
你的图片有多大,imageView 的尺寸是多少?不要依赖 UIImageView 自动缩小它。你可能需要手动调整它的大小,这也会更加节省内存。

我会试一试!我一直对此持怀疑态度...应该听从自己的直觉。 - Mgill404

0
我使用这样的类别: >>>github链接<<< 来进行图像调整。
这也为您提供了一些其他漂亮的功能,例如圆角等。
还要记住,如果要旋转图像以避免锯齿状,则需要在图像边缘添加透明边框。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接