如何使用UIImagePNGRepresentation压缩图像大小

我正在使用UIImagePNGRepresentation来保存图像。 结果图像大小为30+ KB,在我的情况下这是大的。

我尝试使用UIImageJPEGRepresentation ,它允许压缩图像,所以图像保存在<5KB的大小,这是伟大的,但它保存在JPEG给它的白色背景,我不想(我的图像是循环的,所以我需要保存它具有透明背景)。

如何使用UIImagePNGRepresentation来压缩图像大小?


PNG使用无损压缩,这就是为什么UIImagePNGRepresentation不接受像UIImageJPEGRepresentation这样的compressionQuality参数。 你可能会用不同的工具得到一个更小的PNG文件,但没有像JPEG一样。


可能这会帮助你:

- (void)resizeImage:(UIImage*)image{

    NSData *finalData = nil;
    NSData *unscaledData = UIImagePNGRepresentation(image);

    if (unscaledData.length > 5000.0f ) {


       //if image size is greater than 5KB dividing its height and width maintaining proportions


        UIImage *scaledImage = [self imageWithImage:image andWidth:image.size.width/2 andHeight:image.size.height/2];
        finalData = UIImagePNGRepresentation(scaledImage);

        if (finalData.length > 5000.0f ) {

            [self resizeImage:scaledImage];
        }
        //scaled image will be your final image
    }
}

调整图像大小

- (UIImage*)imageWithImage:(UIImage*)image andWidth:(CGFloat)width andHeight:(CGFloat)height
{
    UIGraphicsBeginImageContext( CGSizeMake(width, height));
    [image drawInRect:CGRectMake(0,0,width,height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext() ;
    return newImage;
}
链接地址: http://www.djcxy.com/p/32191.html

上一篇: How to compress image size using UIImagePNGRepresentation

下一篇: Animating UIStackView arrangedSubview content size change