Re: [問題] image的縮小處理
※ 引述《carlcarl (carl)》之銘言:
: 想請問一下一個問題
: 就是我利用ImageIcon設定好圖片後 然後getImage
: 之後利用這個image 使用他的method getScaledInstance來進行壓縮
: 壓縮完後的圖 assign給Image後 得到的大小居然是-1 -1
: 我後來在new BufferedImage的時候就因為這個大小出現錯誤
: 後來我在bufferedImage中畫好image好
: bufferedImage(還沒縮小的)使用 getScaledInstance
: assign 給之前的Image
: 再利用bufferedImage的graphics來將這個壓縮過後的Image來畫到bufferedImage中
: 結果就OK了囧
: 想請問一下 這個是什麼問題啊?<囧>
除了 java.awt.image.BufferedImage/java.awt.image.VolatileImage 外,JRE
提供的 java.awt.image instance 多是實作成 lazy fetching pixel data(
這一點可以從 Image 與相關的 interface 看出來)。
直到對 Image object 做了需要用到 pixel data 或是透過其 image producer 進行
production 操作,Image object 才會進行讀取 pixel data 與 meta data 的
動作。invoke Image.getWidth/getHeight method 會觸發上述動作,但不會等到
fetching 動作完成才 return,如果當時 width/height 資訊尚未取得直接
return -1。(需要 ImageObserver 參數的操作是 async operation)
在沒有 swing 以前,通常會使用 java.awt.MediaTracker 來負責觸發與追蹤
pixel data 的載入。
使用 swing 的話,最簡單的做法是利用 ImageIcon object 來獲得已 fetch pixel
data 的 Image object(width/height 資訊與 pixel 都已備妥):ImageIcon
constructor 會負責觸發 fetching pixel data 直到完成才 return。
http://www.javaworld.com.tw/jute/post/view?bid=5&id=111083&sty=3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.129.218
※ 編輯: sbrhsieh 來自: 218.173.132.171 (01/26 14:16)
推
01/27 05:32, , 1F
01/27 05:32, 1F
→
01/27 05:35, , 2F
01/27 05:35, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):