首页>代码>java头像裁剪上传实例>/myjcrop/src/com/jiong/uploadify/ModifyServlet.java
package com.jiong.uploadify;

import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ModifyServlet extends HttpServlet
{

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 8234179100191628473L;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        /*
         * 获得图片名和裁剪后的图片信息
         */
        // String userid = request.getParameter("userid");
        String x = request.getParameter("x");
        String y = request.getParameter("y");
        String w = request.getParameter("w");
        String h = request.getParameter("h");
        String img = request.getParameter("img");

        int width = Integer.parseInt(w);
        int height = Integer.parseInt(h);
        // int rx = Integer.parseInt(x);
        // int ry = Integer.parseInt(y);

        // 文件格式
        String ext = img.substring(img.lastIndexOf(".") + 1);

        File srcfile = new File(getServletConfig().getServletContext().getRealPath("/") + img);
        FileInputStream is = null;
        ImageInputStream iis = null;
        try
        {
            // 读取文件
            Image image = ImageIO.read(srcfile);
            // 创建图像缓冲区
            BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
            FileOutputStream out = new FileOutputStream(srcfile);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(tag);
            out.close();

            is = new FileInputStream(srcfile);
            iis = ImageIO.createImageInputStream(is);

            Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(ext);
            ImageReader reader = it.next();
            reader.setInput(iis);

            ImageReadParam param = reader.getDefaultReadParam();
            Rectangle rect = new Rectangle(Integer.parseInt(x), Integer.parseInt(y), 120, 120);
            param.setSourceRegion(rect);

            BufferedImage bi = reader.read(0, param);
            ImageIO.write(bi, ext, new File(getServletConfig().getServletContext().getRealPath("/") + img));

            response.getWriter().write("http://localhost:8080/myjcrop/" + img);
        } finally
        {
            if (is != null)
                is.close();
            if (iis != null)
                iis.close();
        }

    }

}
最近下载更多
小开子  LV1 2021年6月4日
1368448963  LV1 2020年11月5日
qqqqddd  LV1 2020年10月26日
miaoss2  LV1 2020年7月31日
jdczuidaima  LV16 2020年6月28日
tsy666666  LV8 2020年2月16日
wxd1997  LV13 2020年1月9日
zywzywzyw1  LV17 2019年9月28日
jaonsang  LV25 2019年6月14日
2399431755  LV12 2019年4月3日
最近浏览更多
刘亦菲9527  LV15 2022年8月1日
我不划水 2022年4月24日
暂无贡献等级
abai250  LV1 2022年3月29日
zhuohanyuan  LV10 2022年1月7日
tangjj7260  LV18 2021年11月12日
czr2233  LV9 2021年9月14日
1964867825 2021年9月6日
暂无贡献等级
天天  LV7 2021年9月4日
小开子  LV1 2021年6月4日
最代码-宋家辉  LV61 2021年5月16日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友