11

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

  1. 我在这里想念什么?为什么图片的大小比原来的大?我怎样才能防止这种情况?

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

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

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

4

2 回答 2

10

我猜原始图像存储为JPEG。

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

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

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

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

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

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

于 2009-01-30T11:03:57.433 回答
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; 

}
于 2015-01-03T18:45:18.017 回答