图片缩略图的实现,比较灵活[可直接使用]

编程技术  /  houtizong 发布于 3年前   82
其中originalPath是图片源地址,newPath是生成缩略图的目的地址,newWidth、newHeight为缩略图的宽度和高度。

//改变图像宽和高,维持宽高比public static void changeImagePixel(String originalPath,String newPath,int newWidth,int newHeight){//读入内存BufferedImage bi=null;try {bi = ImageIO.read(new File(originalPath));//原始宽、高int originalWidth=bi.getWidth();int originalHeight=bi.getHeight();//宽、高比,默认1,即新宽、高和原始宽、高一样double ratio=1;//原始宽、高比,最终将维持该比例double originalRatio=(double)originalWidth/originalHeight;//文件后缀名String fileType = originalPath.substring(originalPath.lastIndexOf("."));String newFileType="jpg";if(fileType.equals("png") || fileType.equals("PNG")){newFileType="png";}//如果图片宽度或者高度超出给定范围if(originalWidth>newWidth || originalHeight>newHeight){if(newWidth < (int)(Math.floor(newHeight * originalRatio))){//以宽度为准,高度自动,维持原始比例ratio = (double)newWidth / originalWidth;} else {//以高度为准,宽度自动,维持原始比例ratio = (double)newHeight / originalHeight;}}AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);Image newImage = op.filter(bi, null);try {//如果目录不存在,则创建//File newPathDir=new File(newPath.substring(0,newPath.lastIndexOf("\\")+1));//if(!newPathDir.exists()) newPathDir.mkdirs();ImageIO.write((BufferedImage) newImage, newFileType, new File(newPath));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客