全栈工程师开发手册 (作者:栾鹏)
java教程全解

java生成缩略图,接收图片,按指定宽高或按比例生成缩略图,能有效降低前端访问图片的流量负载。

支持的图片类型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]

测试代码

thumbnailImage("J:\\demo\\javademo\\javademo\\test.jpg",100,100,"lp_",false);

图片缩略图函数

/*** <p>Title: thumbnailImage</p>* <p>Description: 根据图片路径生成缩略图 </p>* @param imagePath    原图片路径* @param w            缩略图宽* @param h            缩略图高* @param prevfix    生成缩略图的前缀* @param force        是否强制按照宽高生成缩略图(如果为false,则生成原比例缩略图)*/public static void thumbnailImage(File imgFile, int w, int h, String prevfix, boolean force){if(imgFile.exists()){try {// ImageIO 支持的图片类型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]String types = Arrays.toString(ImageIO.getReaderFormatNames());String suffix = null;// 获取图片后缀if(imgFile.getName().indexOf(".") > -1) {suffix = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1);}// 类型和图片后缀全部小写,然后判断后缀是否合法if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0){return ;}Image img = ImageIO.read(imgFile);if(!force){// 根据原图与要求的缩略图比例,找到最合适的缩略图比例int width = img.getWidth(null);int height = img.getHeight(null);//按比例if(width>height)   //如果宽大于高  则宽为w,高按比例缩放{h=(int)(height*w/width);  height/h=width/w}else{w=(int)(width*h/height);  height/h=width/w}/* if((width*1.0)/w < (height*1.0)/h){if(width > w){h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w/(width*1.0)));}} else {if(height > h){w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h/(height*1.0)));}}*/}BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);Graphics g = bi.getGraphics();g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null);g.dispose();String dir = imgFile.getParent();System.out.println(dir);// 将图片保存在原目录并加上前缀ImageIO.write(bi, suffix, new File(dir + File.separator + prevfix +imgFile.getName()));} catch (IOException e) {System.out.println(e);}}else{System.out.println("the image is not exist.");}}public static void thumbnailImage(String imagePath, int w, int h, String prevfix, boolean force){File imgFile = new File(imagePath);thumbnailImage(imgFile, w, h, prevfix, force);}//默认加后缀"thumb_"public static void thumbnailImage(String imagePath, int w, int h, boolean force){thumbnailImage(imagePath, w, h, "thumb_", force);}//默认按比例缩放public static void thumbnailImage(String imagePath, int w, int h){thumbnailImage(imagePath, w, h, false);}

java生成缩略图,接收图片,按指定宽高或按比例生成缩略图相关推荐

  1. php 改变图片的宽高,php缩放图片(根据宽高的等比例缩放)示例

    php缩放图片(根据宽高的等比例缩放)示例 发布于 2014-12-07 08:53:31 | 149 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  2. js 获取图片原始宽高并等比例缩放

    近期做一个驾考项目,由于每张图片加载的时候比例大小都不一样,在试题练习中加载图片时大部分图片会变形,导致图片展示效果非常差,所以我们可以获取图片的原始宽高,然后以等比例展示,效果会非常好.以下就是实现 ...

  3. 百度ueditor自适应(编辑器自适应页面,图片上传宽高,等)

    1.编辑器自适应页面 在实例化编辑器时加上 initialFrameWidth:'100%',//初始化编辑器宽度 代码 <!-- 加载编辑器的容器 --> <script id=& ...

  4. php改变图片宽高,php缩放图片(根据宽高的等比例缩放)实例介绍

    使用方法: 设定宽高,不等比例缩放 include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.j ...

  5. java jsoup抓取百度图片保存到本地,并压缩到指定大小(可指定宽高或者流大小)

    代码如下: package cn.xyz.commons.utils; import java.awt.image.BufferedImage; import java.io.ByteArrayInp ...

  6. java获取上传图片的大小_java 图片上传的处理,获取图片大小,宽高。

    jsp代码 名称 * 图片 内容 js 方法 $(form).ajaxSubmit({ type: "POST", url:"photoes/addup", d ...

  7. java生成二维码,自定义宽高和边框大小

    下面封装的两个方法, url地址是http://开头的要不然浏览器没办法直接跳转 宽高都是一个数 wh 边框 margin 0是没有边框 ,1是最小边框 返回值 BufferedImage 类型的数据 ...

  8. android 通过图片url获取宽高_通过 URL 获取图片宽高优化

    一张小图.png 前言 客户端研发时,有时会有这样的需求,需要根据图片链接地址获取图片的宽高来进行界面排版. 一般比较正规的做法,是服务端在返回数据时将图片的信息属性一起带回来,这也符合轻客户端设计规 ...

  9. 手机banner图片自适应手机宽高定位

    <div class="image-header"><img src="../b1.jpg" alt="" />&l ...

最新文章

  1. 实践微服务六年,我获得了这些心得体会
  2. grep 命令使用笔记
  3. 免费获取验证码60秒倒计时
  4. [logstash-input-file]插件使用详解
  5. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
  6. Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
  7. java多线程交替打印_java实现多线程交替打印
  8. 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)
  9. 2016美国计算机科学硕士,美国计算机科学硕士MS in Computer Science TOP10学校录取要求提醒...
  10. ORACLE异常处理及函数
  11. 语音信号处理基础(八)——同态处理、倒谱、复倒谱
  12. 书单|互联网企业面试案头书之架构师篇
  13. 都说 Linux 是吃内存大户,可你知道具体是哪些进程吃掉了吗?
  14. Async.js——Node世界中被依赖最多的库No.3
  15. 会员积分系统设计 1 内容说明
  16. 数学建模常识及论文写作方法
  17. 苹果手机被偷,从北京到三亚,我用79天找回了它
  18. 用JSP-Servlet构建三层式管理信息系统
  19. RocketChip
  20. Just another Robbery (概率DP)

热门文章

  1. python和c先学哪个-C和Python我该先学什么?
  2. 前沿 | IBM语音识别已接近人类水平
  3. 逆向工程mysql注释_PowerDesigner 15进行逆向工程生成数据库图表时,注释的comment的生成,解决PowerDesigner逆向工程没有列注释...
  4. Vue前端路由~非常详细哦,不要错过
  5. linux服务器80端口是默认开放的么_「Linux」25节-防火墙iptables
  6. XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例)
  7. 怎样固定计算机画图曲线,如何在电脑上画出固定长度的线段
  8. python字符串描述错误的_Python字符串错误字符
  9. git gui怎么拉取项目代码_这些Git命令都不会,还是不要去面试了
  10. 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美