将UIImage保存为NSData时出现缩放问题

时间:2011-12-16 10:33:22

标签: iphone ios uiimage scale

我想将一些图像作为nsdata保存到plist中并稍后检索它。 但我遇到了问题。

问题是,如果UIImage的比例为2.0,那么我以后再用

加载它
[UIImage imageWithData:]

图片显示2x尺寸

我想要的是喜欢

的行为
[UIImage imageNamed:]

将根据屏幕比例加载。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

我终于通过这段代码解决了这个问题:

UIImage *image = [UIImage imageWithData:imageData];
if (isRetinaDisplay)  {
    image = [UIImage imageWithCGImage:[image CGImage] scale:2.0f orientation:UIImageOrientationUp];
}

答案 1 :(得分:2)

您可以考虑屏幕是Retina的可能性如下:

CGFloat screenScale = [UIScreen mainScreen].scale;
UIImage *image = [UIImage imageWithData:data scale:screenScale];

此代码在一行中涵盖两种情况(Retina /非Retina)。

答案 2 :(得分:1)

从iOS 6开始,您也可以使用

+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale NS_AVAILABLE_IOS(6_0);

答案 3 :(得分:0)

scale属性是只读的,但你可以做的是将UIImageView子类化为可写(或根据它运行的设备使其自动化)。

// ImageView.h
@interface ImageView : UIImageView

// ImageView.m

CGFloat scaleProperty = 1.0;
@implementation ImageView
- (void)setScale:(CGFloat)scale
{
    scaleProperty = scale;
}

- (CGFloat)scale
{
    return scaleProperty;
}
@end