【发布时间】:2013-06-05 22:32:18
【问题描述】:
我正在使用 PIL(Python 图像库)将数百张 512x512 图像拼接在一起。生成的图像约为 300 MB。它非常适合大约 50 - 150 MB 的结果,但在一些未知的边界之后,它们开始变成巨大的静态。它们如下图所示。
我已尝试确保内存超过 300 MB。我现在有大约 4 GB 的可用空间,但仍然存在这个问题。我认为这是 PIL 的问题。我猜它不应该处理大文件。
请帮忙。
edit: img.show() 实际上显示了图片(在预览中,因为我有一台 Mac)。不过,我认为它在显示时会被压缩,因为我可以通过比较较小的文件来看到压缩情况,并且它说它是一个 .jpeg
【问题讨论】:
-
300MB 是图像的未压缩大小,还是 PNG 或 JPG 的大小? (跨越 2GB 或 4GB 的错误比跨越 300MB 的错误更有意义……但它也可能类似于跨越 64Kpix 宽度。)
-
另外,您使用的是哪个版本的 PIL(或 Pillow)?您可能遇到了已经修复的错误……
-
最后,您确定这些文件实际上是坏的,而且不仅仅是您用来查看它们的任何东西吗?因为我刚刚创建了一个尺寸为 2Mx60 的 PNG(未压缩超过 300MB,压缩后不到 1MB)并在我的 Mac 上的各种程序中打开它。 Preview 和 Firefox 都会立即给我错误; QuickLook 将其显示为 0x0 图像; Chrome 会旋转 3 分钟,然后显示损坏的图像标签;一个简单的 CoreImage 查看器将其显示为正确的尺寸(或至少非常宽)但纯黑色......没有正确显示它。
-
LibreOffice Draw 终于打开了它……我有一个非常错误的形状(比宽度高得多……但尺寸声称它是 0 像素高)奇怪的红色条带。
-
终于找到了可以处理它的东西:ImageMagick。因此,您可以使用它来裁剪最右边的 512x512,然后在另一个程序中查看它,看看它是否真的是静态的,或者只是您的查看器。但是在 PIL 本身中进行测试可能更简单:重新打开巨型文件,裁剪最右边的 512x512,然后保存并查看它,或者只是
getpixel并检查值......
标签: python image python-imaging-library save