2013-05-25 285 views
-2

我创建了一个包含高分辨率图像的UIImageView。问题是该图像的分辨率太高而无法放入imageView。 imageView的大小是92 x 91(所以它很小)。它包含一个UIImage,它的分辨率太高,所以在UIImageView中看起来很丑。 那么我该如何降低UIImage的分辨率呢?降低分辨率UIImage/UIImageView

我的UIImageView的代码:

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:pngFilePath]]; 
    myImageView.frame = CGRectMake(212.0, 27, 92,91); 
+0

您对分辨率的定义是什么?它通常用作每个单元的像素数。这听起来像你把它定义为图像的尺寸。 –

回答

2

看看这个

https://stackoverflow.com/a/2658801

这将帮助您根据您的需要

Add方法将你的代码调整图片大小,并调用这样

UIImage *myImage =[UIImage imageWithContentsOfFile:pngFilePath]; 
UIImage *newImage =[UIImage imageWithImage:myImage scaledToSize:CGSizeMake(92,91)]; 
+0

如何实现该类方法? – user2420219

+0

请在最新的答案中找到它 – George

0

尝试用这种

 myImageView.contentMode = UIViewContentModeScaleToFill; 
+0

这怎么回答这个问题呢? – Rambatino

0

您需要缩小图像,这会降低分辨率,使其更容易储存。我实际上写了一个类(建立在SO的一些东西上),就是这样做的。这是我的github上,我们来看一看:

https://github.com/pavlovonline/UIImageResizer

的主要方法是

-(UIImage*)resizeImage:(UIImage*)image toSize:(CGFloat)size 

所以你把这个方法的尺寸要缩小图像。如果高度大于宽度,它会自动计算中间值,并为您提供完美居中的正方形。宽度大于高度相同。如果你需要一个不是方形的图像,请自行调整。

所以你会找回缩小的UIImage,然后你可以把它放到你的UIImageView中。节省一些内存。

1

您可以使用此方法调整图像大小以返回已调整大小的图像:

-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    // Here pass new size you need 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

希望它可以帮助你。

+0

如何使用我的UIImage实现此代码? – user2420219

相关问题