菜鸟教程小白 发表于 2022-12-11 19:32:07

ios - 为什么 UIImagePNGRepresentation 返回的数据大于(10 倍于)图像的原始数据大小


                                            <p><p>当我下载图像时使用 sdwebimage,并在图像下载器操作的 <code> 中打印 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {</code></p>

<pre><code>      UIImage *image = ;
      NSString *key = [ cacheKeyForURL:self.request.URL];
      image = ;
      NSLog(@&#34;didCompleteWithError:%@ data lenght:%ld png::%ld,jpg:%ld&#34;,self.request.URL,,,);
</code></pre>

<p>日志证明了这一点</p>

<pre><code>data lenght:163480 png::202498,jpg:131774
</code></pre>

<p>原始数据长度是服务器中图像文件的确切文件大小,但是当我使用这些原始数据创建图像并使用 UIImagePNGRepresentation 或 UIImageJPEGRepresentation 获取 UIImage 的 NSData 长度时,似乎 png 和 jpg UIImage 的呈现(无压缩)会比原始数据更大。是什么原因造成的?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>PNG 文件</strong></p>

<p>PNG 格式是一种无损压缩文件格式,这使其成为在 Web 上使用的常见选择。 PNG 非常适合以小文件大小存储线条图、文本和标志性图形。</p>

<p>由于 GIF 压缩的专利限制,Portable Network Graphics 是一种无损文件格式,旨在取代 GIF 格式。该项目取得了成功,我们现在可以完全访问该格式,该格式没有专利,压缩率很高,并且受到网络浏览器的广泛支持。 PNG 文件主要用于透明图像、单色图像和带有硬线的图像,如文本。 PNG文件有两个版本:8位PNG(称为PNG-8)和24位PNG(称为PNG-24)。 PNG-8 被限制为 256 种索引颜色,而 PNG-24 有数百万种颜色。</p>

<p><strong>JPEG 文件</strong></p>

<p>联合摄影专家组创建了一种文件格式,创造性地命名为 JPEG\ˈjā-ˌpeg\,用于处理复杂色彩的摄影图像。将文件另存为 JPEG 时,用户可以选择质量还是压缩。更多的压缩会导致更小的文件大小,但您会损失质量。显然,较少的压缩会导致较大的文件大小,但也会产生更高质量的图像。 JPEG 压缩的好处在于,您通常可以找到看起来不错且文件大小较小的平衡点。不幸的是,JPEG 文件没有透明度。此外,文件格式是有损的,这意味着每次压缩时都会丢失一些数据。如果由于某种原因多次重新保存同一张图像,图像质量可能会降低。</p>

<p>JPG 格式是一种有损压缩文件格式。这对于以比 BMP 更小的尺寸存储照片非常有用。 JPG 是在 Web 上使用的常见选择,因为它是经过压缩的。为了以较小的文件大小存储线条图、文本和标志性图形,GIF 或 PNG 是更好的选择,因为它们是无损的。</p>

<p>JPEG 用于照片和逼真的图像。 PNG适用于线条艺术、文字较多的图像和颜色较少的图像。 GIF 只是失败了。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么 UIImagePNGRepresentation 返回的数据大于(10 倍于)图像的原始数据大小,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43535295/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43535295/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么 UIImagePNGRepresentation 返回的数据大于(10 倍于)图像的原始数据大小