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从文件读取,画完就释放,当播放速度不是很快时这完全满足要求。

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