简单的图片裁剪服务器
Posted 愤怒的绿萝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的图片裁剪服务器相关的知识,希望对你有一定的参考价值。
自己写的一个简单的图片服务器,可以读取FastDFS上的图片,根据参数进行图片裁剪输出到前台
改项目可以上传图片到FastDFS,读取FastDFS上存储的图片,前面可以增加Varnish图片缓存服务器缓解图片裁剪压力
使用一个简单的Servlet实现
package com.imgcut.servlet; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.Thumbnails.Builder; //测试URL //http://127.0.0.1/imgcut/imgcut?width=100&height=100&rotate=120&imgUrl=https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png public class ImgCutServlet extends HttpServlet { private static final long serialVersionUID = 1L; private final String WIDTH = "100"; private final String HEIGHT = "100"; private final String ROTATE = "90"; private final String OUTPUTFORMAT = "png"; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); String width = request.getParameter("width"); String height = request.getParameter("height"); String imgUrl = request.getParameter("imgUrl"); String rotate = request.getParameter("rotate"); String outputFormat = request.getParameter("outputFormat"); InputStream is = null; ServletOutputStream sos = null; int code; try { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(imgUrl); code = client.executeMethod(method); if(200 == code){ is = method.getResponseBodyAsStream(); } sos = response.getOutputStream(); Builder builder = Thumbnails.of(is); //如果没有设置宽度和高度,使用默认值 if("".equals(width) || width == null){ width = this.WIDTH; } if("".equals(height) || height == null){ height = this.HEIGHT; } builder.size(Integer.parseInt(width), Integer.parseInt(height)); //如果没有设置旋转,使用默认值 if("".equals(rotate) || rotate == null){ rotate = this.ROTATE; } builder.rotate(Integer.parseInt(rotate)); //设置输出格式 if("".equals(outputFormat) || outputFormat == null){ outputFormat = this.OUTPUTFORMAT; } builder.outputFormat(outputFormat); //输出处理后的图片 builder.toOutputStream(sos); sos.println(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ response.getWriter().println("项目报错,请查看日志!"); } } }
测试效果:
以上是关于简单的图片裁剪服务器的主要内容,如果未能解决你的问题,请参考以下文章