2011-07-13 6 views
12

iPhoneの既存の写真ライブラリとして写真ライブラリを作成したいと思います。フォトライブラリから選んだスクロールビューワに画像を追加します。画像を追加する前に、選択した画像のサイズを変更してImageView Controlに設定します。ただし、iPhoneフォトライブラリの画質で追加された画質と比較すると、コントロール画像がうまくありません。どのように品質とwithouメモリオーバーフローの問題をもたらす。iPhoneで良質の画像をリサイズする方法

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 

} 

答えて

20

この問題も発生しました。私は網膜ディスプレイを備えたiPhone 4を使っていると思います。あなたがいなくても、あなたはそれを考慮する必要があります。 UIGraphicsBeginImageContext()の代わりにUIGraphicsBeginImageContextWithOptions()を使用し、scaleプロパティをUIScreenと3番目の引数に使用します。すべてのiOSデバイスにはスケールプロパティがあり、iPhone 4では2.0に設定されています。残りの部分には、これを書いているように、1.0に設定されています。

だからあなたのコードは、それらの変更で、むしろ `[UIScreen mainScreen]あなただけ使用することができます.scale`` image.scale`を使用するよりも

-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    UIGraphicsBeginImageContextWithOptions(newSize, YES, [UIScreen mainScreen].scale); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 

} 
+4

になります。 – memmons

+0

私は多くの記事を読んでいますが、この単純な解決法は実際には2K +から100pxになるほどの品質を失うことなく、かなりうまく機能します。 '... WithOptions()'を追加するだけでやりました。 – denikov

+2

私は多くの複雑なソリューションを試した後、5ライナーの方法は、最高の作品と最高の品質を持っていた興味深いことがわかります。 –

関連する問題