javaweb基于内容的图片搜索引擎(4)_前台检索以及结果
来源:互联网 发布:mpp文件打开软件 编辑:程序博客网 时间:2024/05/18 13:24
图片也得到了,索引也通过lire成功建立了,剩下的,当然就是显示了,以及业务功能实现了。
前面已经说了,这个系统是javaweb,主要在struts2,spring,hibernate和tomcat服务器,mysql数据库服务器下开发的。
前台页面一个是imagesearch.JSP,主要就是供本地上传和图片url,类似于百度的识图。
而而后,图像文件就会以流的形式传到后台,后台在利用lire来检索开始已经建立好的索引,最后,由lire检索后的文件会以精度排序,
并且以最开始生成检索的文件名来标示,主要功能代码如图:
public String upload() throws Exception{List<ImageInfo> imageInfos = new ArrayList<ImageInfo>();IndexLocation indexLocation = ildi.getRootLocation(1);String cacheName;InputStream inStream;if (file == null) {// 用链接来搜图的String[] pic = url.split("\\.");System.out.println();cacheName = System.currentTimeMillis() + "." + pic[pic.length-1];try {java.net.URL givenUrl = new java.net.URL(url);java.net.HttpURLConnection conn = (java.net.HttpURLConnection) givenUrl.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5 * 1000);inStream = conn.getInputStream();// 通过输入流获取图片数据} catch (Exception e) {return "linkError";}// 检索过程,通过检索而得到目标的文件地址list,方法来通用实现!//保存图片到本地OutputStream os = new FileOutputStream(new File(ildi.getRootLocation(3).getValue(),cacheName));byte[] buf = new byte[10240];int length = 0;while(-1 != (length = inStream.read(buf))){os.write(buf,0,length);}os.close();} else {//1452166113700.image/jpegcacheName = System.currentTimeMillis() + "." + this.fileContentType.substring(6);// 用上传文件的方式来搜索的try {inStream = new FileInputStream(file);//保存图片到本地OutputStream os = new FileOutputStream(new File(ildi.getRootLocation(3).getValue(),cacheName));byte[] buf = new byte[1024];int length = 0;while(-1 != (length = inStream.read(buf))){os.write(buf,0,length);}os.close();} catch (Exception e) {return "fileError";}}System.out.println("000");IndexReader ir = IndexReader.open(FSDirectory.open(new File(indexLocation.getValue()))); ImageSearcher is = ImageSearcherFactory.createJCDImageSearcher(10000); //FileInputStream fis = new FileInputStream(); BufferedImage bi; if(file == null){ bi = ImageIO.read(new java.net.URL(url)); request.setAttribute("rootPicture", url); }else{ bi = ImageIO.read(file); //D:\\cache String str = ildi.getRootLocation(3).getValue().toString(); String strimg = str.substring(0,2) + "\\" + str.substring(4); System.out.println("980930129739812791##"+strimg + "\\" + cacheName); request.setAttribute("rootPicture", strimg + "\\" + cacheName); } // BufferedImage bi = ImageIO.read(new java.net.URL(url)); ImageSearchHits ish = is.search(bi, ir); for (int i = 0; i < ish.length(); i++) { String str = ish.doc(i).getFieldable(DocumentBuilder.FIELD_NAME_IDENTIFIER).stringValue(); ImageInfo imgImageInfo = new ImageInfo(); imgImageInfo.setScore(ish.score(i)); imgImageInfo.setUrl(str); imgImageInfo.setTitle(pdi.getPictueByName(str).getDescription()); imgImageInfo.setHomeUrl(pdi.getPictueByName(str).getObjurl()); imageInfos.add(imgImageInfo); System.out.println(ish.score(i) + ": " + str); } request.setAttribute("imageInfos", imageInfos); return "success";}最后当然通过传到的list集合来显示啊,但是呢,过程不会总是一帆风顺的。。。。。。
看下面的结果图:
没错,有问题!!!
下一篇就会有我找问题的感悟和收获了。
1 0
- javaweb基于内容的图片搜索引擎(4)_前台检索以及结果
- javaweb基于内容的图片搜索引擎(5)_问题的分析与后话
- javaweb基于内容的图片搜索引擎(1)_整体概括
- javaweb基于内容的图片搜索引擎(2)_后台爬图
- javaweb基于内容的图片搜索引擎(3)_lire后台使用
- 基于内容的相似图片检索
- 基于内容的图像检索技术(4)
- 基于内容的视频检索(CBVR)
- 信息检索:搜索引擎---怎样量化评价搜索引擎的结果质量
- 基于内容的图片检索CBIR(Content Based Image Retrieval)简介
- 基于内容的图片检索CBIR(Content Based Image Retrieval)简介
- 基于内容的图片检索CBIR(Content Based Image Retrieval)简介
- 基于内容的图片检索CBIR(Content Based Image Retrieval)简介
- 基于内容的图片检索CBIR(Content Based Image Retrieval)简介
- 基于搜索引擎的全文检索-研究背景(3.15初稿)
- 基于Lucene/XML的站内全文检索解决方案_搜索引擎优化SEO165
- 基于内容的图像检索
- 基于内容的音频检索
- Intellij Idea 使用笔记
- 获取字符数方法
- SPOJ 5971 LCM SUM
- 项目实施中CRP的含义,以及各个阶段
- 责任链模式(java语言实现)
- javaweb基于内容的图片搜索引擎(4)_前台检索以及结果
- vertical-align: middle垂直居中
- web开发中表单的验证问题
- 【静下心学习Unity】学习笔记 (三)Unity Physics - Hinge Joint(铰链关节) 实现门的功能
- popupwindow的学习
- Maven学习记录(一)--IDEA下环境配置
- SQL中的limit
- c++第三次实验-1
- 关于this