java+js实现完整的图片展示本地目录demo

最近的项目满足需要,实现通过一个前端button点击事件,流行音乐浏览下的全部图片:

思路:

- 获取到所需展示图片的本地目录内全部图片的文件绝对路径名称(路径+图片名称.格式名称)

- 因为图片过大。对图片进行按比例压缩再展示

- 在前端展示图片

- (前端各式各样的展示……)


第一步:获取本地目录中的全部图片路径

java代码:

    package com.giscafer.common;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; /**
* 文件预览辅助类
* @author lhb
*
*/
@Controller
public class FileBrowseUtil {
/**
* 通过ajax请求获取传入的文件路径里边的文件fileList数组
* @param req
* @param resp
* @param params 目录路径參数
* @return
* @throws ServletException
* @throws IOException
* @throws MalformedURLException
*/
@RequestMapping("/getFileList.do")
@ResponseBody
protected ArrayList<String> CalculateGeoServlet(HttpServletRequest req,
HttpServletResponse resp,String params) throws ServletException, IOException,
MalformedURLException {
ArrayList<String> fileList=new ArrayList<String>();
fileList=getFiles(params);
return fileList;
}
/**
* 通过递归得到某一路径下全部的目录及其文件
* @param filePath 文件路径
* @return
*/
public static ArrayList<String> getFiles(String filePath) {
ArrayList<String> fileList = new ArrayList<String>();
File root = new File(filePath);
File[] files = root.listFiles();
for (File file : files) {
if (file.isDirectory()) {
/*
* 递归调用
*/
getFiles(file.getAbsolutePath());
fileList.add(file.getAbsolutePath());
} else {
String picPathStr = file.getAbsolutePath();
// String picPathStr = file.getAbsolutePath().replaceAll("\\\\","//");
fileList.add(picPathStr);
}
}
/*for(String str:fileList){
System.out.println(str);
}*/
return fileList;
}
}

能够先调用測试输出结果如图

String filePath = “C://Users//giscafer//Pictures//大白”;

getFiles(filePath )

第二步 前端ajax调用请求获取图片路径数组

/**
*获取图片文件数组
*/
function common_getPicFileList() {
var params = "C://Users//giscafer//Pictures//大白";
$.ajax({
//此处使用的是自己封装的JAVA类
url: Config.hostUrl + "/getFileList.do",
type: "POST",
data: {params: params},//图片目录路径作为參数传入java类
success: function (data) {
if (!data.length) {
alert("您还没有截图,无法查看图片!");
return;
} else {
//获取到的图片数组处理逻辑方法
loadPicFormDB(data);
} },
error: function (e) {
console.log(e);
console.log("获取文件list数组失败,请检查接口服务");
}
});
}

结束以上两个步骤就能够完毕浏览本地图片的方法了。剩下的就是loadPicFormDB(data);方法,这个依据你们须要进行展示。网上也有非常多相冊类型的现成的代码,直接拿来用改掉图片地址就可以。


下面是本人的

/**
* 载入图片。将图片拼成html代码
* @param SJ_CODE 事件编号
*/
function loadPicFormDB(data) {
var pichtml = "";
for (var i = 0; i < data.length; i++) {
var src =data[i]; var html1 = '<li><a href="file:///' + src + '" rel="lightbox" title="' + data[i] + '" target="_blank">'
+ '<img onload="AutoResizeImage(800,450,this)" src="' + src + '"></a><span>' + data[i] + '</span></li>'; pichtml += html1;
//scrollPic();
}
;
showPicDetail(pichtml);//展示图片(此代码省略,直接给个div或者弹窗就能够了) }

上边使用到的AutoResizeImage方法是一个图片压缩方法,压缩原理:

1. 按传入的maxWidth和maxHeight的大小进行图片压缩

/**
* 按比例缩小图片
* @param maxWidth
* @param maxHeight
* @param objImg
* @constructor
*/
function AutoResizeImage(maxWidth, maxHeight, objImg) {
var img = new Image();
img.src = objImg.src;
var hRatio;
var wRatio;
var Ratio = 1;
var w = img.width;
var h = img.height;
wRatio = maxWidth / w;
hRatio = maxHeight / h;
if (maxWidth == 0 && maxHeight == 0) {
Ratio = 1;
} else if (maxWidth == 0) { //
if (hRatio < 1)
Ratio = hRatio;
} else if (maxHeight == 0) {
if (wRatio < 1)
Ratio = wRatio;
} else if (wRatio < 1 || hRatio < 1) {
Ratio = (wRatio <= hRatio ? wRatio : hRatio);
}
if (Ratio < 1) {
w = w * Ratio;
h = h * Ratio;
}
objImg.height = h;
objImg.width = w;
}

效果:


—–The End—–


版权声明:本文博主原创文章,博客,未经同意不得转载。

java+js实现完整的图片展示本地目录demo的更多相关文章

  1. java从网络中下载图片到本地

    public class imageDownload { public static void main(String[] args) { String url = "http://loca ...

  2. JS - 简单的下载图片至本地

    <iframe id="saveImg" src="图片路径" style="display:none;"></ifram ...

  3. openseadragon.js与deep zoom java实现艺术品图片展示

    openseadragon.js 是一款用来做图像缩放的插件,它可以用来做图片展示,做展示的插件很多,也很优秀,但大多数都解决不了图片尺寸过大的问题. 艺术品图像展示就是最简单的例子,展示此类图片一般 ...

  4. java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络]

    java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络] 地址:http://blog.csdn.net/allgis/article/details/46364875

  5. JS实现有点炫的图片展示效果-图片解体和组合

    经过4个月的努力学习,迎来了进入市场的最后一个学习项目.自己模仿了一个图片展示效果,用在了项目中,感觉挺炫的.在这里分享一下,希望大家喜欢~! bomb-showImg : 在线演示http://ru ...

  6. 手把手教小白如何用css+js实现页面中图片放大展示效果

    1.前言      很多童鞋会在项目中遇到一些上传图片,展示图片的操作,但是图片呢有大有小,为了页面的美观,有时候我们需要将图片展示成固定宽高度,但是呢,领导就会说,我想看大图片,怎么办?想看就看呀, ...

  7. java上传图片,把图片存到本地

    思路:js通过FileReader获取图片的Base64,Java解码用IO存到本地. HTML 代码 <input type="file" ng-model="f ...

  8. Springboot项目中 前端展示本地图片

    Springboot项目中 前端展示本地图片 本文使用的是Springboot官方推荐的thymeleaf(一种页面模板技术) 首先在pom文件加依赖 <dependency> <g ...

  9. jq图片展示插件highslide.js简单dom

    今天用用了一款图片展示插件highslide.js,感觉用起来很是舒畅,几乎不用怎么写代码,只需要知道如何写参数就行了. 那么这么牛叉的插件我们该如何用哪,下面我就跟大家讲解一下. 一.引入   首先 ...

随机推荐

  1. (七)unity4.6Ugui中国教程文档-------摘要-UGUI Auto Layout

    大家好,我是太阳广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unityman ...

  2. hdu 4524 郑厂长系列故事——逃离迷宫 小水题

    郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  3. 程序设计实践C++ 程序代写(QQ 928900200)

    程序设计实践 采用C++作为编程语言. 设计开发一个“学生信息”管理系统.该系统模拟数据库管理系统(DBMS)的功能,为用户提供数据存储.查找的能力. 该系统存储的学生信息包括: 学号.姓名.性别.语 ...

  4. 深挖BAT内部级别和薪资待遇,你敢看?(转)

    一. 阿里内部级别和薪资待遇 先看个例子,或许你也曾像他一样纠结 BAT 的 offer: 最近刚通过阿里面试,但基本薪酬也是不升反小降. 级别只有 P6+,连 P7 都没有,非常郁闷,打算拒绝算了. ...

  5. HDOJ 5147 Sequence II 树阵

    树阵: 每个号码的前面维修比其数数少,和大量的这后一种数比他的数字 再枚举每一个位置组合一下 Sequence II Time Limit: 5000/2500 MS (Java/Others)    ...

  6. 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom

    原文:重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom [源码下载] ...

  7. Java Drp项目实战——Drp知多少

    是什么 Drp是Distribution Resource Planning的缩写,意思是分销资源计划.它是用来管理企业的执行于Internet上的分销网络的系统,是以商业流程优化为基础,它的核心是销 ...

  8. WPF中的三维空间(1)

    原文:WPF中的三维空间(1) WPF中可以创建三维几何图形,支持3D对象的应用,支持从3D Max等软件将3D文件obj导入设计中,但是目前还不支持将材质同时导入,这样需要在WPF中对3D对象重新设 ...

  9. HDU 4284 状压dp+spfa

    题意: 给定n个点 m条无向边 d元. 以下m行表示每条边 u<=>v 以及花费 w 以下top 以下top行 num c d 表示点标为num的城市 工资为c 健康证价格为d 目标是经过 ...

  10. 打开 chm 帮助文件显示空白及解决方法

    有个很奇葩的解决方法:把 chm 文件用压缩软件压缩,然后用压缩软打开此压缩包,直接双击压缩包里面的 chm 文件 这虽然解决了问题,但是这不科学…… 分析:直接打开压缩包里面的文件,压缩包的文件是临 ...