上传图片问题(UIImageJPEGRepresentation vs UIImagePNGRepresentation)

Mus*_*afa 11 cocoa-touch ios-simulator

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

  1. 我在这里错过了什么?为什么图片的大小会比原始大小大?我怎么能阻止这个?

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

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

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

and*_*ncx 10

我猜测原始图像存储为JPEG.

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

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

如果您使用有损JPEG并将其另存为PNG,那么它的大小会增加,通常会大量增加,如您所见.

您的问题的解决方案是在上传图像之前不对图像执行任何操作.它们已经是PNG,GIF或JPEG图像.这就是你应该上传的内容.

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

听起来像你可能需要一般阅读PNGJPEG.