1

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

ImageReader fromFile:'pic.jpg'.

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

关于如何解决这个问题的任何想法或建议?pharo 中的相同操作似乎可以正常工作。

谢谢!

4

2 回答 2

1

ImageReader 将自动选择正确的子类,例如 JPEGImageReader。选择子类并不是慢的部分;解码JPG数据是。

与 PNG 不同,jpeg 文件不使用 zip 压缩,而是使用离散余弦变换(参见https://en.wikipedia.org/wiki/JPG#JPEG_compression)。这种压缩需要大量的数字处理,这在 VisualWorks 中比在 C 中要慢。另一方面,PNG 阅读器使用 Zlib 在 C 中完成数字处理部分,这就是它快得多的原因。

您可以使用 Cairo 或 GDI 或您手头的任何其他 C-API 来加快速度。

于 2014-01-20T09:02:51.393 回答
0

尝试直接调用 JPEGImageReader:

JPEGImageReader fromFile:'pic.jpg'

如果速度很快,那么减速在于找到合适的图像阅读器用于文件。您安装了哪些 ImageReader 以及它们如何实现类方法 canRead:?

如果 JPEGImageReader 仍然很慢,那么我们可以从那里进行调查。

于 2014-01-19T14:19:24.153 回答