Java实现的不同图片居中剪裁生成同一尺寸缩略图功能示例
程序员文章站
2024-03-01 14:38:28
本文实例讲述了java实现的不同图片居中剪裁生成同一尺寸缩略图功能。分享给大家供大家参考,具体如下:
因为业务需要,写了这样一个简单类,希望能帮助对有这方面需要的人,高手...
本文实例讲述了java实现的不同图片居中剪裁生成同一尺寸缩略图功能。分享给大家供大家参考,具体如下:
因为业务需要,写了这样一个简单类,希望能帮助对有这方面需要的人,高手莫笑
源码如下:
package platform.edu.resource.utils; import java.awt.graphics; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; /** * 图片工具类 * @author hjn * @version 1.0 2013-11-26 * */ public class imageutil { /** * 图片等比缩放居中剪裁 * 不管尺寸不等的图片生成的缩略图都是同一尺寸,方便用于页面展示 * @param imagesrc图片所在路径 * @param thumbwidth缩略图宽度 * @param thumbheight缩略图长度 * @param outfilepath缩略图存放路径 * @throws interruptedexception * @throws ioexception */ public static void createimgthumbnail(string imgsrc, int thumbwidth, int thumbheight, string outfilepath) throws interruptedexception, ioexception { file imagefile=new file(imgsrc); bufferedimage image = imageio.read(imagefile); integer width = image.getwidth(); integer height = image.getheight(); double i = (double) width / (double) height; double j = (double) thumbwidth / (double) thumbheight; int[] d = new int[2]; int x = 0; int y = 0; if (i > j) { d[1] = thumbheight; d[0] = (int) (thumbheight * i); y = 0; x = (d[0] - thumbwidth) / 2; } else { d[0] = thumbwidth; d[1] = (int) (thumbwidth / i); x = 0; y = (d[1] - thumbheight) / 2; } file outfile = new file(outfilepath); if (!outfile.getparentfile().exists()) { outfile.getparentfile().mkdirs(); } /*等比例缩放*/ bufferedimage newimage = new bufferedimage(d[0],d[1],image.gettype()); graphics g = newimage.getgraphics(); g.drawimage(image, 0,0,d[0],d[1],null); g.dispose(); /*居中剪裁*/ newimage = newimage.getsubimage(x, y, thumbwidth, thumbheight); imageio.write(newimage, imagefile.getname().substring(imagefile.getname().lastindexof(".") + 1), outfile); } }
ps:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:
在线图片转换base64工具:
ico图标在线生成工具:
在线email邮箱图标制作工具:
在线图片格式转换(jpg/bmp/gif/png)工具:
更多java相关内容感兴趣的读者可查看本站专题:《java图片操作技巧汇总》、《java日期与时间操作技巧汇总》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》及《java数据结构与算法教程》。
希望本文所述对大家java程序设计有所帮助。