代码之家  ›  专栏  ›  技术社区  ›  Mustafa

上传图像问题(uiimagejpegrepresentation与uiimagepngrepresentation)

  •  11
  • Mustafa  · 技术社区  · 17 年前

    我用Safari的“hold+save image”选项在模拟器的照片库中存储了一些图片。当我从库中选择图像时,我必须将其转换为jpeg或png,以便将其上载到服务器。问题是原始图像的大小约为200KB,但转换为PNG后的图像大小约为2MB。我在用 UIImagePNGRepresentation 皈依 UIImage 对象到 NSData 然后发布图像。

    1. 我这里缺什么?为什么照片的尺寸比原来大?我该如何预防?

    2. 有什么区别吗 UIImageJPEGRepresentation ui图像pngre演示文稿 ?应该使用哪一个(推荐)?

    3. 我可以确定从照片库加载的图像类型吗?

    4. iPhone相机捕获的默认图像类型是什么?

    2 回复  |  直到 11 年前
        1
  •  10
  •   andynormancx    17 年前

    我猜原始图像是以jpeg格式存储的。

    PNG设计用于存储屏幕截图和线条绘制等内容。它不是为存储像照片这样的东西而设计的。

    归根结底,PNG使用的压缩类型是无损压缩,因此图像将与原始图像完全相同。jpeg使用有损压缩,生成的图像与原始图像近似。

    如果您采用一个有损的jpeg,然后将其保存为png,那么它的大小就会增加,通常会增加大量,如您所见。

    解决你的问题的方法是在上传图片之前不要做任何事情。它们已经是png、gif或jpeg图像了。这就是你应该上传的内容。

    iPhone相机保存的图像格式为jpeg。

    听起来你可能需要读一些关于 PNG JPEG 一般来说。

        2
  •  1
  •   nurider    11 年前

    关于第三点,您可以在图像选取器委托方法中确定从库中加载的图像类型,如下所示:

    - (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info {
    
        // Get the image reference URL
        NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
    
        // The path extension contains the image type: JPG, PNG, GIF, etc.
        NSString *originalImageType = referenceURL.pathExtension; 
    
    }
    
    推荐文章