快速的作縮圖問題 |
尚未結案
|
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
謝謝您的轉貼不過這部份我已經完成了,我現在的問題倒不是這個,而是只針對單一張圖檔做縮圖的速度問題,不知各位有沒發現,當我們用Timage載入一張jpg圖檔時,會先將JPG解壓縮放到picture.Bitmap中,之後才畫到Timage的canvas上,經我測試的結果,當jpg如果粉大的時候(如2048*2048),其實將JPG解壓縮放到picture.Bitmap中的速度其實非常的快,幾乎是你按下執行鈕的那一刻就解好了,但是當你要將picture.Bitmap畫到canvas時就需要等個幾秒.......... 可能是因為我們要將圖檔縮小顯示,因此在做大圖換小圖的運算..... . 。其實這邊才是我真正想問的,實際上要怎麼實作縮圖才會快,因為我發現其實show縮圖的快慢,在於做縮圖的技巧。雖然Timage中可以設Stretch,它會call API來達成縮圖的效果,但在處理大張jpg圖的速度上確有點不儘理想,不知有沒有人有做過縮圖理論的研究呢?
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
想要自己作出快速縮圖,那就得很清楚圖檔的格式。
例如原圖檔 2048x2048 如果我們要縮圖成 1/64 的大小 256x256 那我們只需要將顯示需要的那 256x256 的像素資料讀出(或計算出),其他的不理,這樣才會比整個圖檔處理要快 64 倍(理論上),如果您用 Stretch 那還是整個 2048x2048 都讀出了,鐵定是快不了。 如果按您測試,讀出整張圖都不需要花太多時間,那就是要自己花功夫在 Stretch 上。 當您已將整張圖都讀出,還是可以放在一個 TImage 或是 TBitmap 但是「不顯示」,再使用自己的 Stretch 演算法,例如最簡單的 N 點取 1 點的方式,重組一個新的 TImage 或 TBitmap ,再以重組後的 TImage 或 TBitmap 來顯示。
在處理像素時,如果要求速度,那就不要用 Pixel 來取得每一點的 TColor 值,請改用 Scanline 取得每一 row 的 raw data 數值。 這樣速度應該就可以很快了(雖然您得寫較多的 code 但應該是會快才對)。 沒空更新的網頁...
http://coolsite.to/dllee C及指標教學,計算機概論,資訊管理導論... http://home.kimo.com.tw/dllee.tw
http://coolsite.to/ushells 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 前一陣子在研究如何快速的替一張圖檔(jpg、gif,BMP等)做縮小圖, 測來測去,發現acdsee在做大張jpg圖檔時,如2048x2048圖檔的縮圖時明顯快了許多,如果TImage用Stretch也沒辦法那麼快,最後發現用gdi 內建的做縮圖指令才有辦法做的跟acdsee差不多速度,不知有沒有人有快速度做縮圖的方法呢?謝謝?iamjsn 你好: 建議你先參考站長寫的內差法
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
|
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
我要更正我之前的測試發言,先前提到用jpeg.pas解壓縮粉快的這一件事,因為這是我去年的記憶,最近我追了一下source發現,當我們第一次要paint jpg圖檔時,才會呼叫到jpeg.pas裏的getbitmap
Getbitmap這個程序才會開始對jpg做解壓縮的動作,這裏才是整個show圖之所以會慢的真正地方,這個地方測了粉多次,總是覺得這段source解壓縮的速度有點慢(因為acdsee秀一張圖跟本不用那麼久),一些能設的屬性都設了還是比別人慢,目前也無能為力了....只好先不理它。期待有高人能指點了。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |