欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现的不同图片居中剪裁生成同一尺寸缩略图功能示例

程序员文章站 2024-02-28 22:15:22
本文实例讲述了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程序设计有所帮助。