2011-12-16 8 views
1

イメージをnsdataとしてplistに保存し、後で取得したいと考えています。 しかし、私は問題があります。UIImageをNSDataとして保存する際のスケーリングの問題

私は私が欲しいもの

[UIImage imageWithData:] 

画像ショーの2倍の大きさ

と、後で再びそれを読み込む2.0の規模でUIImageは、

の行動を好むのであれば、問題は、あります
[UIImage imageNamed:] 

画面の規模に応じて読み込まれます。

私はそれをどのように行うことができますか?

答えて

3

UIImage *image = [UIImage imageWithData:imageData]; 
if (isRetinaDisplay) { 
    image = [UIImage imageWithCGImage:[image CGImage] scale:2.0f orientation:UIImageOrientationUp]; 
} 
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 
1

のiOS 6以降、あなたもあなたのアカウントに、画面がとても似網膜である可能性を取ることができる

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

を使用することができます:

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

このコードeは、両方のケース(Retina/non Retina)を1行でカバーします。

+0

これは正しい答えです。 – shmim