使用VisualWorks加载图像(图形)非常慢

时间:2014-01-19 09:32:53

标签: smalltalk pharo visualworks

我正在尝试将像jpeg这样的图像文件作为应用程序的一部分加载到vw中。这似乎需要很长时间,有时甚至会崩溃。图像大约有3.5MB,是一个简单的jpeg图片。这就是导致问题的原因:

ImageReader fromFile:'pic.jpg'.

此操作大约需要5-10秒才能完成。它同样发生在32位和64位项目中。

关于如何解决这个问题的任何想法或建议? pharo中的相同内容似乎正常。

谢谢!

2 个答案:

答案 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仍然很慢,那么我们可以从那里进行调查。