我正在尝试将像jpeg这样的图像文件作为应用程序的一部分加载到vw中。这似乎需要很长时间,有时甚至会崩溃。图像大约有3.5MB,是一个简单的jpeg图片。这就是导致问题的原因:
ImageReader fromFile:'pic.jpg'.
此操作大约需要5-10秒才能完成。它同样发生在32位和64位项目中。
关于如何解决这个问题的任何想法或建议? pharo中的相同内容似乎正常。
谢谢!
答案 0 :(得分:1)
ImageReader将自动选择正确的子类,如JPEGImageReader。挑选子类不是缓慢的部分;解码JPG数据是。
与PNG不同,jpeg文件不使用zip压缩,而是使用离散余弦变换(请参阅https://en.wikipedia.org/wiki/JPG#JPEG_compression)。这种压缩需要大量的数字运算,这在VisualWorks中比在C中慢。另一方面,PNG阅读器使用Zlib在C中完成数字运算部分,这就是为什么它要快得多。
您可以使用Cairo或GDI或您手头的其他任何C-API来加快速度。
答案 1 :(得分:0)
尝试直接调用JPEGImageReader:
来自文件的JPEGImageReader:'pic.jpg'
如果速度很快,那么减速就是找到适合该文件的图像阅读器。您已经安装了什么ImageReader以及它们如何实现类方法canRead:?
如果JPEGImageReader仍然很慢,那么我们可以从那里进行调查。