【问题标题】:Uploading image issue (UIImageJPEGRepresentation vs UIImagePNGRepresentation)上传图片问题(UIImageJPEGRepresentation vs UIImagePNGRepresentation)
【发布时间】:2010-10-04 10:49:57
【问题描述】:

我已经使用 Safari 的“按住 + 保存图像”选项将一些图片存储到了我在模拟器中的照片库中。当我从库中选择图像时,我必须将其转换为 JPEG 或 PNG,以便将其上传到服务器。问题是原始图像的大小约为 200 KB,但转换为 PNG 后的图像约为 2 MB。我正在使用UIImagePNGRepresentationUIImage 对象转换为NSData,然后发布图像。

  1. 我在这里缺少什么?为什么图片的大小比原来的大?我该如何防止这种情况发生?

  2. UIImageJPEGRepresentationUIImagePNGRepresentation 有什么区别?应该使用哪一个(推荐)?

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

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

【问题讨论】:

    标签: cocoa-touch ios-simulator


    【解决方案1】:

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

    - (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; 
    
    }
    

    【讨论】:

      【解决方案2】:

      我猜原始图像存储为 JPEG。

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

      这一切都取决于所使用的压缩类型,PNG 使用无损压缩,因此图像将与原始图像完全相同。 JPEG 使用有损压缩,生成的图像是原始图像的近似值。

      如果您拍摄有损 JPEG,然后将其另存为 PNG,那么它的大小会增加,通常会增加很多,正如您所见。

      解决您的问题的方法是在上传图片之前不对其进行任何操作。它们已经是 PNG、GIF 或 JPEG 图像。这就是您应该上传的内容。

      iPhone相机保存的图片格式为JPEG格式。

      听起来您可能需要对PNGJPEG 进行一些阅读。

      【讨论】:

      • 感谢您的回复。我正在使用 POST 方法上传我的图像,为此我不知道任何其他方法,除了通过 UIImageJPEGRepresentation 或 UIImagePNGRepresentation 方法将 UIImage 转换为 NSData(在发布请求中提供“Content-Type:image/jpeg”)。
      • 怎样才能达到上传图片原格式的效果?
      • 恐怕我对 iPhone 开发一窍不通。但是我想您只需要加载文件,将其转换为 NSData 并上传即可。如果您甚至需要触摸 JPEG/PNG 类来上传文件中的数据,我会感到惊讶。抱歉,我无法提供更多帮助。
      • 我在谷歌上搜索了一下表明我可能错了你不需要 UIImageJPEGRepresentation forums.macrumors.com/showthread.php?t=558573
      猜你喜欢
      • 2013-03-09
      • 2020-01-20
      • 2023-03-10
      • 2013-07-02
      • 2011-05-05
      • 2019-02-03
      • 2011-04-23
      • 2020-07-08
      相关资源
      最近更新 更多