2011-07-13 50 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号线方法是最好的并且质量最好的方法。 –