求java高效读取图片的方法

365810247 2008-06-20 02:55:06
嗯,在项目需要从硬盘读取图片(50张以上,像素大于1024X768)并显示在UI中(Swing).
并且在UI中反复多次的缩放显示.
目前用的是双缓存.
可是效果做出来是好慢.很多时候卡死,没有反应!
现在想找另外一种高效的方法替代.

Thanks!


...全文
1504 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
lj472365528 2012-07-23
  • 打赏
  • 举报
回复
嗯哼。 一样。
  • 打赏
  • 举报
回复
同求啊,像加载图片,缩放图片都相当耗CPU啊,特别是大图的时候,体积4M就会卡1秒钟左右。
虽然是08年的贴。
guolicheng123456 2010-05-28
  • 打赏
  • 举报
回复
mark
sagezk 2008-06-23
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 andy861025 的回复:]
引用 19 楼 sagezk 的回复:
界面挺漂亮,别用 JLabel 了,拿它显示大图片缩放时肯定快不了,自己绘制图片或写个显示图片缩略图的组件,这样性能能高不少。创建缩略图组件能用到 java.awt.Canvas(用来绘制和显示缩略图)和 java.awt.Image.getScaledInstance(int width, int height, int hints)(用于生成具有一定大小和质量的缩略图)。


sagezk Thanks!

我现在改成用JPanel显示 效果还是不是很明显!

假如我用自…
[/Quote]
javax.swing.JComponent 和 java.awt.Component 都可以,继承自 Component 能简单点,要覆盖其中 paint 和 update 方法,将自己的绘图方法放到 paint 里面。
365810247 2008-06-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yirentianran 的回复:]
使用ImageMagick试试
安装后用java命令行调用
就行
[/Quote]

yirentianran Thanks!

找了相关的资料!可是没有找到下载的地址,找到的是一些没有提供下载的地址!
365810247 2008-06-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 sagezk 的回复:]
界面挺漂亮,别用 JLabel 了,拿它显示大图片缩放时肯定快不了,自己绘制图片或写个显示图片缩略图的组件,这样性能能高不少。创建缩略图组件能用到 java.awt.Canvas(用来绘制和显示缩略图)和 java.awt.Image.getScaledInstance(int width, int height, int hints)(用于生成具有一定大小和质量的缩略图)。
[/Quote]

sagezk Thanks!

我现在改成用JPanel显示 效果还是不是很明显!

假如我用自己写一个图片控件:是继承 javax.swing.JComponent,还是直接继承java.awt.Component呢?实现相关方法!
goodmrning 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lschou520 的回复:]
关注!...........................
[/Quote]
sagezk 2008-06-21
  • 打赏
  • 举报
回复
如果是因为每次显示下一幅图片时等待文件读取结束的时间过长,可以采用预读取方法,即当正在查看图片3时,把相邻的图片 2 4 预先读取到内存,翻页时直接从内存读取图片象素信息,能提高点性能。
sagezk 2008-06-21
  • 打赏
  • 举报
回复
先判断一下卡的原因,是文件读取还是图片显示造成的。
亦风亦尘 2008-06-21
  • 打赏
  • 举报
回复
关注!...........................
pangxie 2008-06-21
  • 打赏
  • 举报
回复
采用多线程加载显示图片,那样效率更高
richard_first 2008-06-21
  • 打赏
  • 举报
回复
不会,关注中…………………………………………………………………………………………………………………………………………………………
胡矣 2008-06-21
  • 打赏
  • 举报
回复
使用ImageMagick试试
安装后用java命令行调用
就行
365810247 2008-06-21
  • 打赏
  • 举报
回复
帖子加分!
ORACLE800 2008-06-21
  • 打赏
  • 举报
回复
界面很漂亮!对Java的图形界面多了一点信心1
sagezk 2008-06-21
  • 打赏
  • 举报
回复
如果要使用 ImageMagick 可以在 http://www.imagemagick.org/script/api.php 找到相应的 JavaAPI 接口 jar 包下载地址。不过好像没开始提供下载(参见 http://sourceforge.net/project/stats/detail.php?group_id=218089&ugn=jmagick&type=prdownload)。
KOOK_OKKO 2008-06-21
  • 打赏
  • 举报
回复
顶加学习加凑满字数继续加
sagezk 2008-06-21
  • 打赏
  • 举报
回复
另外绘制缩略图的漂亮边框能用到 javax.swing.border.Border 接口的 paintBorder(Component c, Graphics g, int x, int y, int width, int height) 方法,具体做法参照:

import javax.swing.border.Border;
import javax.swing.BorderFactory;
...
Border border = BorderFactory.createXxxxBorder(); //Xxxx 表示边框绘制器的样式名称。
border.paintBorder(yourComponent, yourGraphics, x, y, width, height); //分别指定绘制边框的组件,由组件获得的Graphics,绘制的边框左上角的xy坐标及绘制边框的外缘宽高。
a296694166 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yirentianran 的回复:]
使用ImageMagick试试
安装后用java命令行调用
就行
[/Quote]
加载更多回复(11)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧