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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值