Are there any frameworks/libraries that provide servlets/filters etc that handle reencoding on the fly of images.
- interpret the accept headers and output the file, reencoding into the new format if necessary by checking the actual format of the original image file.
- provide a low and high quality version of an image.
- re encode an image into ne开发者_开发问答w dimensions. width and height parameters might query string parameters.
I could create versions of the file in all the formats, at upload time but the seems overkill. I would rather lazily create the rencoded file and stick it in a cache if it gets served again etc.
You donot need any framework. Do folowing:
- Upload image. See Apache Commons FileUpload
- Process the uploaded file using any of
- Java Advance Imaging
- Java wrapper for ImageMagick
- When processed, provide a link to download.
ImageMagick might be what you're after. http://www.imagemagick.org/script/index.php, there's a java interface for it available here: http://www.jmagick.org/index.html
As Nishants suggested .. I'd use Apache Commons FileUpload, once you get the image .. just convert it to any format you want
You need no framework. Java has all you need:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/png");
ServletOutputStream output = response.getOutputStream();
try {
BufferedImage image = ImageIO.read( new File( "/path/to/image.jpg" ) );
ImageIO.write(image, "png", output);
} finally {
output.close();
}
}
}
精彩评论