如何编写一个旋转图像的 servlet? [英] How do I write a servlet which rotates images?

查看:70
本文介绍了如何编写一个旋转图像的 servlet?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只是想分享这个 servlet,它需要 2 个参数(img-> 图像名称,旋转 -> 图像旋转)从图像目录加载图像旋转它并将其输出到 servlet 流

Hi just wanted to share this servlet it takes 2 arguments ( img-> image name , rot ->rotation of the images) loads the image from the images directory rotates it and outputs it to the servlet stream

你可以在下面的答案中找到它

you can find it in the answer below

推荐答案





package at.buchinger.mapdisplay;

import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RotatedImage
 */
public class RotatedImage extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public RotatedImage() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String img = (String) request.getParameter("img");
        String path = getServletContext().getRealPath("image/"+img);


        String r;
        r=request.getParameter("rot");
        if(r==null){
            r="0";
        }
        double rot = Double.parseDouble( r);

        BufferedImage image = ImageIO.read(new File(path));
        AffineTransform tx = new AffineTransform();

        tx.rotate(Math.toRadians(rot), image.getWidth()/2, image.getHeight()/2);

        AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
        image = op.filter(image, null);



           ServletContext sc = getServletContext();
            String filename = getServletContext().getRealPath(path);

            // Get the MIME type of the image
            String mimeType = sc.getMimeType(filename);
            if (mimeType == null) {
                sc.log("Could not get MIME type of "+filename);
                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                return;
            }


            // Set content type
            response.setContentType(mimeType);
            ServletOutputStream out = response.getOutputStream();
            Iterator iter = ImageIO.getImageWritersByMIMEType(mimeType);

            ImageIO.write(image, "png", out);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}



这篇关于如何编写一个旋转图像的 servlet?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆