首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传图像问题(UIImageJPEGRepresentation与UIImagePNGRepresentation)

上传图像问题(UIImageJPEGRepresentation与UIImagePNGRepresentation)
EN

Stack Overflow用户
提问于 2009-01-30 10:40:21
回答 2查看 11.3K关注 0票数 11

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

  1. 我在这里错过了什么?为什么图片的大小比原来的大?我怎么才能阻止这一切?
  2. UIImageJPEGRepresentationUIImagePNGRepresentation有什么区别?应该使用哪一个(推荐)?
  3. 我可以确定从照片库加载的图像类型吗?
  4. iPhone摄像机捕获的默认图像类型是什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-30 11:03:57

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

PNG是设计用来存储诸如屏幕截图和线条绘制之类的东西。它不是为存储照片之类的东西而设计的。

这可以归结为所使用的压缩类型,PNG使用无损压缩,这样图像将与原始图像完全相同。JPEG采用有损压缩,得到的图像近似于原始图像。

如果您采取有损JPEG,然后将其保存为一个PNG,那么它的大小将增加,通常是大量的,正如您已经看到的。

解决你的问题的办法是在上传图片之前不要对它们做任何事情。他们将已经是PNG,GIF或JPEG图像。这就是你应该上传的东西。

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

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

票数 10
EN

Stack Overflow用户

发布于 2015-01-03 18:45:18

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

代码语言:javascript
复制
- (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; 

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/495096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档