2011-07-13 49 views
12

我想在iPhone中創建一個照片庫作爲現有照片庫。我從Photo庫中選擇的scrollviewer添加圖像。在添加圖像之前,我調整所選圖像的大小並將其設置爲ImageView Control.But,當我比較添加的圖像質量與iPhone照片庫圖像質量時,我的控制圖像不好。如何帶來質量和內存溢出問題。如何在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

我也遇到過這個問題。我認爲你正在使用帶Retina Display的iPhone 4。即使你不是,你應該解釋它。而不是UIGraphicsBeginImageContext(),使用UIGraphicsBeginImageContextWithOptions()並使用UIScreenscale屬性作爲第三個參數。所有iOS設備都具有縮放屬性,在iPhone 4上它設置爲2.0;在我寫這篇文章的時候,它被設置爲1.0。

所以你的代碼,這些變化,變得

-(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

而不是使用'[UIScreen mainScreen] .scale'你可以使用'image.scale'。 – memmons

+0

我讀了很多文章,這個簡單的解決方案實際上工作得很好,不會失去太多的質量,從2K +降到100px。只需添加'... WithOptions()'就可以了。 – denikov

+2

我覺得有趣的是,在嘗試了許多複雜的解決方案之後,5號線方法是最好的並且質量最好的方法。 –