Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(iphone)将png加载到UIImage比png二进制大小占用更多内存?_Iphone_Png_Uiimage - Fatal编程技术网

(iphone)将png加载到UIImage比png二进制大小占用更多内存?

(iphone)将png加载到UIImage比png二进制大小占用更多内存?,iphone,png,uiimage,Iphone,Png,Uiimage,我正在加载100s 4k-8k png文件(768*768分辨率),总共不到1mg 虽然我偶尔会将它们转换为UIImage并调整图像大小/组合图像, 我惊讶地看到ipad设备因为图像加载导致内存警告而死亡 转换为UIImage是否比文件的实际字节大小占用更多内存 谢谢。这是因为png被解压缩到内存中,占用了更多内存。每个解压缩的图像将占用768×768×4=2.25兆字节的内存。 < P>你可能想考虑如何加载图像,如果它们不是同时显示的话。这里和其他地方都有很多关于这方面的线索,例如 UIIma

我正在加载100s 4k-8k png文件(768*768分辨率),总共不到1mg

虽然我偶尔会将它们转换为UIImage并调整图像大小/组合图像,
我惊讶地看到ipad设备因为图像加载导致内存警告而死亡

转换为UIImage是否比文件的实际字节大小占用更多内存


谢谢。

这是因为png被解压缩到内存中,占用了更多内存。每个解压缩的图像将占用768×768×4=2.25兆字节的内存。

< P>你可能想考虑如何加载图像,如果它们不是同时显示的话。这里和其他地方都有很多关于这方面的线索,例如


UIImage-imageNamed
将缓存图像(有时苹果的缓存有点问题,无法正确释放),而
UIImage-imageWithData
将不会,因此一旦不再显示,内存将被释放。两者都有优点和缺点,这取决于你的环境,所以试着对它们的区别有一个很好的理解

啊。。巨大的差异。。有没有一种方法可以告诉(大约)一个给定的png在解压缩时会占用多少内存?是的-宽度x高度x 4给出了以字节为单位的大小-对于任何解压缩的图像格式,公式都是相同的,因为每个像素都会有4个字节大。啊,压缩的png文件大小是4k还是40k无关紧要?它会被解压到宽*高*4?此外,png是否为PNGCrush(正如苹果的xcode所做的那样)在解压时与文件大小无关?不,因为当它加载到内存中时,它是未压缩的。如果您知道PNG不包含alpha通道数据,则可以节省一些空间,然后您可以将其存储为RGB而不是RGBA。不过我没有尝试过。我认为,该图像本身只需要320x320x4,但是一些额外的内存将占用画布上放置图像的视图(即UIImageView)。谢谢,我实际上是从sqlite加载它们,其中包含UIImageWithData。尽管如此,我还是会立即加载它们。正如你所说,我可能需要重新考虑如何保留/丢弃图像