java web 头像图片先缩放再剪切功能的使用

来源:互联网 发布:三星s5智能网络切换 编辑:程序博客网 时间:2024/05/21 08:33

这两天研究了一下图片的缩放的剪切,在各个网站都会有头像的设置,比如QQ,所以图片的剪切是必须的

package com.dbwen.core.util;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;

import javax.imageio.ImageIO;

public class ImageUtils {   

        /**    

        * 对图片进行缩放  剪切 

        * @param srcImageFile: 路径  x,y:左上角坐标 destWidth,destHeight :剪切后的长 宽,finalWidth,finalHeight:前台页面图片的长 宽

        * @throws IOException   

        */ 

    public static void abscut(String srcImageFile, int x, int y, int destWidth,
            int destHeight,int finalWidth,int finalHeight) {
        try {
            Image img;
            ImageFilter cropFilter;
            // 读取源图像
            BufferedImage bi = ImageIO.read(new File(srcImageFile));
            int srcWidth = bi.getWidth(); // 源图宽度
            int srcHeight = bi.getHeight(); // 源图高度
           
            System.out.println("srcWidth= " + srcWidth + "\tsrcHeight= "
                    + srcHeight);
           // if (srcWidth >= destWidth && srcHeight >= destHeight) {
                Image image = bi.getScaledInstance(finalWidth, finalHeight,Image.SCALE_DEFAULT);//获取缩放后的图片大小
                cropFilter = new CropImageFilter(x, y, destWidth, destHeight);
                img = Toolkit.getDefaultToolkit().createImage(
                        new FilteredImageSource(image.getSource(), cropFilter));
                BufferedImage tag = new BufferedImage(destWidth, destHeight,
                        BufferedImage.TYPE_INT_RGB);
                Graphics g = tag.getGraphics();
                g.drawImage(img, 0, 0, null); // 绘制截取后的图
                g.dispose();
                // 输出为文件
                ImageIO.write(tag, "jpg", new File(srcImageFile));
           
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    }

具体代码如上,我发现了几个不容易理解的地方。

1:参数  x,y  是什么   x是左上角  距离左边的距离,y是左上角距离上边的距离,

2:在页面的图片尺寸是固定的,获取的坐标和长宽是相对于缩放的图片,不进行处理的话,剪切的图片是不正确的,要先进行相应的缩放,再剪切


前台用js,获取图片的坐标和长度宽度

0 0