Java 如何编写一个旋转图像的servlet?

Java 如何编写一个旋转图像的servlet?,java,image,servlets,outputstream,Java,Image,Servlets,Outputstream,Hi只是想分享这个servlet,它有两个参数(img->image name,rot->rotation of the images)从images目录加载图像,旋转图像并将其输出到servlet流 你可以在下面的答案中找到它 package at.buchinger.mapdisplay; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.

Hi只是想分享这个servlet,它有两个参数(img->image name,rot->rotation of the images)从images目录加载图像,旋转图像并将其输出到servlet流

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

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); } } 包位于.buchinger.mapsdisplay; 导入java.awt.geom.AffineTransform; 导入java.awt.image.AffineTransformOp; 导入java.awt.image.buffereImage; 导入java.io.File; 导入java.io.IOException; 导入java.util.Iterator; 导入javax.imageio.imageio; 导入javax.imageio.ImageWriter; 导入javax.servlet.ServletContext; 导入javax.servlet.ServletException; 导入javax.servlet.ServletOutputStream; 导入javax.servlet.http.HttpServlet; 导入javax.servlet.http.HttpServletRequest; 导入javax.servlet.http.HttpServletResponse; /** *Servlet实现类RotateImage */ 公共类RotateImage扩展了HttpServlet{ 私有静态最终长serialVersionUID=1L; /** *@参见HttpServlet#HttpServlet() */ 公共旋转图像(){ 超级(); //TODO自动生成的构造函数存根 } /** *@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应) */ 受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{ String img=(String)request.getParameter(“img”); 字符串path=getServletContext().getRealPath(“image/”+img); 字符串r; r=请求.getParameter(“rot”); if(r==null){ r=“0”; } double rot=double.parseDouble(r); buffereImage image=ImageIO.read(新文件(路径)); AffineTransform tx=新的AffineTransform(); tx.rotate(Math.toRadians(rot),image.getWidth()/2,image.getHeight()/2); AffineTransformOp=新的AffineTransformOp(tx,AffineTransformOp.TYPE_双线性); image=op.filter(image,null); ServletContext sc=getServletContext(); 字符串文件名=getServletContext().getRealPath(路径); //获取图像的MIME类型 字符串mimeType=sc.getMimeType(文件名); if(mimeType==null){ sc.log(“无法获取“+文件名”的MIME类型); response.setStatus(HttpServletResponse.SC_内部_服务器_错误); 返回; } //设置内容类型 response.setContentType(mimeType); ServletOutputStream out=response.getOutputStream(); 迭代器iter=ImageIO.getImageWritersByMIMEType(mimeType); 写入(图像“png”,输出); } /** *@请参阅HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse响应) */ 受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{ doGet(请求、响应); } }