如何在iPhone中重新塑造高质量的图像

Gna*_*elu 13 iphone cocoa-touch objective-c

我想在iPhone中创建一个照片库作为现有的照片库.我在scrollviewer中添加图像,从图像库中选择.在添加图像之前,我调整所选图像的大小并将其设置为ImageView Control.But当我与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;

}
Run Code Online (Sandbox Code Playgroud)

age*_*ped 22

我也碰到了这个问题.我认为你正在使用配备Retina Display的iPhone 4.即使你不是,你应该考虑到它.而不是UIGraphicsBeginImageContext(),使用UIGraphicsBeginImageContextWithOptions()和使用第三个参数的scale属性UIScreen.所有iOS设备都具有scale属性,在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;

}
Run Code Online (Sandbox Code Playgroud)

  • 而不是使用`[UIScreen mainScreen] .scale`,你可以使用`image.scale`. (4认同)
  • 我觉得有趣的是,在尝试了许多复杂的解决方案之后,5衬里方法是最好的并且具有最佳质量的方法. (2认同)