0

我已经审查并应用了许多参考来调整具有相同质量但无法获得的图像大小。

我可以从 UIView 获取图像并使用如下所述的代码调整大小:-

- (UIImage *)imageWithView:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData* imageData =  UIImagePNGRepresentation(image);
    UIImage* pngImage = [UIImage imageWithData:imageData];
    UIImageWriteToSavedPhotosAlbum(pngImage, nil, nil, nil); // PNG image size: {750, 1334}
    NSLog(@"PNG Image Size: %@", pngImage);


    CGSize size = CGSizeMake(375, 667);
    [self imageWithImage1:pngImage scaledToSize:size];
    [self imageWithImage2:pngImage scaledToSize:size];

    return image;
}

- (UIImage *)imageWithImage1:(UIImage *)image scaledToSize:(CGSize)newSize
{
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData* imageData1 =  UIImagePNGRepresentation(newImage);
    UIImage* scaledImage1 = [UIImage imageWithData:imageData1];
    UIImageWriteToSavedPhotosAlbum(scaledImage1, nil, nil, nil); // PNG Resized image 1 size: {375, 667}
    NSLog(@"PNG Scaled Image Size: %@", scaledImage1);

    return newImage;
}

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

    NSData* imageData1 =  UIImagePNGRepresentation(newImage);
    UIImage* scaledImage1 = [UIImage imageWithData:imageData1];
    UIImageWriteToSavedPhotosAlbum(scaledImage1, nil, nil, nil); // PNG Resized image 2 size: {375, 667}
    NSLog(@"PNG Scaled Image Size: %@", scaledImage1);

    return newImage;
}

PNG 图像大小:{750, 1334}

调整大小后我从 PNG 图像获得的两个图像都是 {375, 667}。根据我的要求,这是正确的。

但是两个调整大小的图像的质量都低于原始 PNG 图像。我能认出按钮、图标和文本是模糊的。

我该如何解决。请帮助,提前谢谢。

我需要与 PNG 图像质量相同的调整大小的图像。

PNG图像:

在此处输入图像描述

PNG调整大小的图像1:

在此处输入图像描述

PNG调整大小的图像2:

在此处输入图像描述

4

1 回答 1

0

以高质量调整大小

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

    }
于 2017-08-21T09:03:15.647 回答