java springMVC 图片缓存问题
来源:互联网 发布:415打击网络政治谣言 编辑:程序博客网 时间:2024/05/01 23:20
现在做的项目,需要将图片一次性加载到页面上,我试过从数据库里面读二进制,发现花的时间太长,基本上要十几秒才能加载出来,而且图片越多加载越慢,就想着怎么能将图片下载到本地,再去读本地的地址,这样肯定就会快很多,事实上确实如此。废话不多说,代码上来。
因为这里讲的是图片缓存,上传图片在这里就不多说了
public void pageLoad()
{
String itemtype = "checkpointphoto";
String str = "";
String str2 = "";
String sql = "select * from frame_attachstorage sto LEFT JOIN frame_attachinfo info on sto.ATTACHGUID=info.ATTACHGUID where info.uploaduserguid = '"
+userSession.getUserGuid()+"' and sto.contenttype like 'image%'";
if(StringUtil.isNotBlank(itemtype)){
sql += "and sto.cliengtag = '"+itemtype+"'";
}
List<FrameAttachStorage> attaches = service.findList(sql, FrameAttachStorage.class);
for( int i=0;i<attaches.size();i++){
FrameAttachStorage storage = attaches.get(i);
String type = storage.getContentType();
if(".png".equals(type)||".jpg".equals(type)||".jpeg".equals(type)||".gif".equals(type)||".bmp".equals(type)){
//下载到本地
FileMkdir fm = new FileMkdir();
//decideFile 是下面要调用到的方法,这个很关键
String url = fm.decideFile(storage);
//拼接前台内容
if(i==0){
str += "<li style=\"z-index: 1;\"><img height=\"380\" width=\"650\" src=\"" + url + "\" /></li>";
str2 += "<li style=\"filter: alpha(opacity : 100); opacity: 1;\"><img src=\"" + url + "\" /></li>";
}else{
str += "<li><img height=\"380\" width=\"650\" src=\"" + url + "\" /></li>";
str2 += "<li><img src=\"" + url + "\" /></li>";
}
}
}
//传给前台
addCallbackParam("str", str);
addCallbackParam("str2", str2);
}
下面的这个方法是我写的公共类里面的,方便复用
public String decideFile(FrameAttachStorage storage){
//获取当前项目路径
String pwd = System.getProperty("user.dir");
//查找图片路径下有没有需要加载的图片,如果没有就从数据库里面下载
File file=new File(pwd+"/src/main/webapp/pages/images/"+storage.getAttachGuid()+".jpg");
if(!file.exists()) {
try {
BufferedImage bufferedImage = ImageIO.read(storage.getContent());
Image image = bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT);
BufferedImage outputImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics graphics = outputImage.getGraphics();
graphics.drawImage(image, 0, 0, null);
graphics.dispose();
ImageIO.write(outputImage, "jpg", new File(pwd+"/src/main/webapp/pages/images/"+storage.getAttachGuid()+".jpg"));
}
catch (IOException e1) {
e1.printStackTrace();
}
}
String url = "../../images/"+storage.getAttachGuid()+".jpg";
return url;
}
这样就可以直接从本地读取图片了,一般加载几十张图片两秒内都能搞定
- java springMVC 图片缓存问题
- springmvc图片上传问题
- ajax 图片缓存问题
- Ie图片缓存问题
- AFNetworking图片缓存问题
- AFNetworking图片缓存问题
- 图片缓存问题
- 关于浏览器图片缓存问题
- 关于图片缓存的问题
- 关于浏览器图片缓存问题
- JSP解决图片缓存问题
- 手机浏览器图片缓存问题
- AFNetworking图片缓存问题<转>
- sdwebimage缓存图片对比问题
- 图片缓存问题的总结
- AFNetworking图片缓存问题 -- @ShinePug
- java 使用SpringMVC上传图片
- java之springmvc图片上传
- 数据库
- 字符串转List
- Javascript高级程序设计——6.函数
- python中的模块,包,库的定义
- 洛谷 P1909 买铅笔
- java springMVC 图片缓存问题
- CSS3元素过渡属性transition
- 示波器的使用
- Android学习 (十八) 用GSON解析JSON数据并在ListView中显示
- Java常用类介绍
- Java——Tesseract-OCR使用中文包报错read_params_file
- UML类图简介
- Android CoordinatorLayout解析
- 安卓开发之Button