【问题标题】:Why image size get increased after UIImagePNGRepresentation?为什么在 UIImagePNGRepresentation 之后图像大小会增加?
【发布时间】:2019-02-06 12:38:47
【问题描述】:

我在 iPhone 的照片应用中有图片文件。

我已通过空投将它带到我的 macbook 并检查了图像的大小 = 1.9 MB

我将相同的图像保存到 iphone 的文件应用程序并在那里检查图像大小 = 1.9 MB

我已通过UIImagePickerController 将相同的图像放入我的应用程序中,

  • 使用UIImagePNGRepresentation 并打印数据计数/字节计数 = 15.8 MB
  • 使用 UIImageJPEGRepresentation 和 compressionRatio 1.0 并打印数据计数/字节计数 = 5.4 MB
  • 使用 UIImagePNGRepresentation 并将其保存到本地(DocumentsDirectory)并检查文件大小 = 15.8 MB
  • 使用 UIImageJPEGRepresentation 和 compressionRatio 1.0 并将其保存到本地(DocumentsDirectory)并检查文件大小 = 5.4 MB

现在,我的问题是,为什么 UIImagePNGRepresentationUIImageJPEGRepresentation 会将文件大小增加到那么大?我什至把这张图片上传到我的服务器上,显然得到了更大的图片尺寸。我想以原始质量将给定图像上传到我的服务器,但我不想要这么大尺寸的图像(因为它在设备上的实际尺寸完全不同),有没有其他方法可以防止原始图像的大小和质量两者都有?

【问题讨论】:

    标签: ios uiimage uiimagepickercontroller uiimagejpegrepresentation uiimagepngrepresentation


    【解决方案1】:

    让我们以 WWDC 2018 会议中的这个例子 - 416_ios_memory_deep_dive。如果您有 590kb 文件大小的图像,则图像的尺寸为 2048 像素 x 1536 像素。因此,此图像的总内存为 10MB(2048 像素 x 1536 像素 x 4 字节/像素)有关更多详细信息,您可以查看此视频。 https://developer.apple.com/videos/play/wwdc2018/416/

    【讨论】:

    • 感谢@Alex L,我观看了完整的 WWDC 视频,我知道了这个问题背后的原因。但我只想从 imagepickercontroller 获取图像,将其显示给用户,一旦用户确认,然后上传到我的服务器(通过多部分)。现在,如果我要上传这张图片(渲染一张),我也会在服务器上获得更大的尺寸。有什么方法可以使我渲染图像不同并且上传图像不同(具有实际文件大小)。即使我在渲染后保存图像,我的文件大小仍然与渲染的相同。
    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2021-12-08
    • 2015-07-17
    • 2019-07-02
    • 2021-01-21
    • 2017-04-22
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多