Re: [問題] image的縮小處理

看板java作者 (偶爾想擺爛一下)時間16年前 (2010/01/26 13:29), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
感謝 我後來直接利用new imageicon(壓縮過的image)
01/27 05:32, 1F

01/27 05:35, , 2F
就成功了 不知道image會有這樣的情形= =||
01/27 05:35, 2F
文章代碼(AID): #1BNdsbIn (java)
討論串 (同標題文章)
文章代碼(AID): #1BNdsbIn (java)