Java循環播放圖片問題

       昨日在論壇中看到一貼,用Java實現循環播放截圖,遇到問題頗多,下面是他的描述:

    “播放連續截圖的時候都是卡的我眼淚直流,而且JFrame窗體老變白,我在畫圖片之前又將背景繪製成全黑,還是一樣,還有會出現白背景!另外就是,我在將播放的幀數設置爲每秒20幀的時候(也就是每50ms畫一幀),根本就看不到圖片出現;將其改爲150ms的時候,也能看到圖片的模糊影像,設置爲兩百的時候,纔會出現上上面說的那種很卡的播放效果”

    卡是情有可原,可能JVM內存不足造成,這個可以通過加大JVM內存來解決;而窗體發白,背景發黑這種情況我倒是沒遇見過,前段時間做過一個切圖工具,圖片超大時(17MB,遊戲地圖)是很卡,不夠也能順利切割;圖片循環播放也是一個挺簡單的問題,怎麼會出現這樣情況呢,會不會是界面重繪出了問題,動手試一試:

    下面是一個用於循環播放圖片的DisplayJPanel,繼承了類JPanel和接口Runnable,把這個DisplayJPanel放在上層容器如JScrollPane上傳入參數即可,很簡單的一段代碼:

 

    用Netbeans做了很簡單的邊框佈局的界面,界面效果如下:

界面

    代碼如下:

 

        我也測試了一下,從屏幕截了一張圖,尺寸爲1081*636大小爲139KB的JPG圖片,共複製了424張,總大小57.9MB,給程序分配了900MB內存(不能少於700MB),導入圖片時另開線程導入;播放沒有問題,很流暢,沒有出現界面發白背景發黑的情況。

    一次把圖片都加載到內存這種方案最大的不足就是當圖片很多很大時要耗費大量的內存,容易出現內存溢出錯誤,難於控制。可以改成實時加載的方案,要畫到的圖片才用ImageIO從文件讀取,畫完就釋放,當播放速度不是很快時這完全滿足要求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章