我試圖將jpeg等圖像文件加載到vw中作爲應用程序的一部分。這似乎需要很長時間,有時甚至會導致vw崩潰。該圖像大約3.5MB,是一個簡單的JPEG圖片。這是導致問題的原因:使用VisualWorks加載圖像(圖形)速度很慢
ImageReader fromFile:'pic.jpg'.
此操作大約需要5-10秒才能完成。它發生在32位和64位的項目中。
有關我如何解決此問題的任何想法或建議? pharo中的相同的東西似乎工作正常。
謝謝!
我試圖將jpeg等圖像文件加載到vw中作爲應用程序的一部分。這似乎需要很長時間,有時甚至會導致vw崩潰。該圖像大約3.5MB,是一個簡單的JPEG圖片。這是導致問題的原因:使用VisualWorks加載圖像(圖形)速度很慢
ImageReader fromFile:'pic.jpg'.
此操作大約需要5-10秒才能完成。它發生在32位和64位的項目中。
有關我如何解決此問題的任何想法或建議? pharo中的相同的東西似乎工作正常。
謝謝!
嘗試直接調用JPEGImageReader:
JPEGImageReader FROMFILE:「pic.jpg」
如果是這樣的快,那麼經濟放緩是在尋找合適的圖像閱讀器使用的文件。你已經安裝了哪些ImageReader,以及它們如何實現類方法canRead:?
如果JPEGImageReader仍然很慢,那麼我們可以從那裏調查。
我試過了。有趣的現象是,我得到以下錯誤:'無法確定圖像文件的類型'。 –
上面直接使用JPEGImageReader的調用不起作用,因爲調用僅在子類中查找。您可以使用AT Profiler來分析加載操作,以查看大部分時間是在哪裏進行的?正如Karsten所說,這可能是圖像解壓縮算法中的一些問題。但是,總的來說,我並沒有發現JPEG解壓縮的速度與您所報告的一樣慢。 –
如果您可以提供您正在嘗試閱讀的JPEG文件,將有助於確定問題。 –
ImageReader將自動選擇正確的子類,如JPEGImageReader。挑選這個子類並不是很慢的部分;解碼JPG數據是。
與PNG不同,jpeg文件不使用zip壓縮,而是使用離散餘弦變換(請參閱https://en.wikipedia.org/wiki/JPG#JPEG_compression)。這種壓縮需要大量的數字運算,這在VisualWorks中比在C中慢。另一方面,PNG閱讀器使用Zlib在C中完成數字運算部分,這就是爲什麼它更快。
您可以使用開羅或GDI或其他任何C-API來提高速度。
可以想象,爲該項目添加的圖像閱讀器在canBeRead中使用了低效測試。這就是我問的原因。你是正確的,這個問題更可能是壓縮問題。 –
順便說一句,這是使用VW 7.10。我可能會在另一臺計算機上安裝較舊的安裝,稍後再嘗試安裝。 –