Apache commons-fileupload是一个很好的文件上传工具,最近使用commons-fileupload实现了图片的上传及显示,可将图片保存在指定的文件夹中,也可以将图片存放在数据库,并支持四种常用的图片格式:jpg,png,gif,bmp。
首先,跟上传一般文件一样,需要写一个servlet来处理上传的文件,你可以修改保存路径或选择将图片保存在数据库中,只需要做简单的修改就行了,servlet代码如下:
FileUploadServlet.java
servlet中使用到一个ImageUtil类,其中封装了图片处理的实用方法,用于读写图片,代码如下:
ImageUtil.java
java 代码
- package com.ek.image;
- import java.awt.Component;
- import java.awt.Graphics2D;
- import java.awt.GraphicsConfiguration;
- import java.awt.GraphicsDevice;
- import java.awt.GraphicsEnvironment;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.image.BufferedImage;
- import java.awt.image.ColorModel;
- import java.awt.image.PixelGrabber;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Iterator;
- import javax.imageio.ImageIO;
- import javax.imageio.ImageReader;
- import javax.imageio.stream.MemoryCacheImageInputStream;
- import net.jmge.gif.Gif89Encoder;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import com.sun.imageio.plugins.bmp.BMPImageReader;
- import com.sun.imageio.plugins.gif.GIFImageReader;
- import com.sun.imageio.plugins.jpeg.JPEGImageReader;
- import com.sun.imageio.plugins.png.PNGImageReader;
-
-
-
-
-
-
- public class ImageUtil {
-
- public static final String TYPE_GIF = "gif";
- public static final String TYPE_JPEG = "jpeg";
- public static final String TYPE_PNG = "png";
- public static final String TYPE_BMP = "bmp";
- public static final String TYPE_NOT_AVAILABLE = "na";
- private static ColorModel getColorModel(Image image)
- throws InterruptedException, IllegalArgumentException {
- PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
- if (!pg.grabPixels())
- throw new IllegalArgumentException();
- return pg.getColorModel();
- }
- private static void loadImage(Image image) throws InterruptedException,
- IllegalArgumentException {
- Component dummy = new Component() {
- private static final long serialVersionUID = 1L;
- };
- MediaTracker tracker = new MediaTracker(dummy);
- tracker.addImage(image, 0);
- tracker.waitForID(0);
- if (tracker.isErrorID(0))
- throw new IllegalArgumentException();
- }
- public static BufferedImage createBufferedImage(Image image)
- throws InterruptedException, IllegalArgumentException {
- loadImage(image);
- int w = image.getWidth(null);
- int h = image.getHeight(null);
- ColorModel cm = getColorModel(image);
- GraphicsEnvironment ge = GraphicsEnvironment
- .getLocalGraphicsEnvironment();
- GraphicsDevice gd = ge.getDefaultScreenDevice();
- GraphicsConfiguration gc = gd.getDefaultConfiguration();
- BufferedImage bi = gc.createCompatibleImage(w, h, cm.getTransparency());
- Graphics2D g = bi.createGraphics();
- g.drawImage(image, 0, 0, null);
- g.dispose();
- return bi;
- }
- public static BufferedImage readImage(InputStream is) {
- BufferedImage image = null;
- try {
- image = ImageIO.read(is);
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- return image;
- }
-
- public static BufferedImage readImage(byte[] imageByte) {
- ByteArrayInputStream bais = new ByteArrayInputStream(imageByte);
- BufferedImage image = readImage(bais);
- return image;
- }
- public static void encodeGIF(BufferedImage image, OutputStream out)
- throws IOException {
- Gif89Encoder encoder = new Gif89Encoder(image);
- encoder.encode(out);
- }
-
-
-
-
-
-
- public static void printImage(BufferedImage bi, String type,
- OutputStream out) {
- try {
- if (type.equals(TYPE_GIF))
- encodeGIF(bi, out);
- else
- ImageIO.write(bi, type, out);
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- }
-
-
-
-
-
-
-
- public static String getImageType(byte[] textObj) {
- String type = TYPE_NOT_AVAILABLE;
- ByteArrayInputStream bais = null;
- MemoryCacheImageInputStream mcis = null;
- try {
- bais = new ByteArrayInputStream(textObj);
- mcis = new MemoryCacheImageInputStream(bais);
- Iterator itr = ImageIO.getImageReaders(mcis);
- while (itr.hasNext()) {
- ImageReader reader = (ImageReader) itr.next();
- if (reader instanceof GIFImageReader) {
- type = TYPE_GIF;
- } else if (reader instanceof JPEGImageReader) {
- type = TYPE_JPEG;
- } else if (reader instanceof PNGImageReader) {
- type = TYPE_PNG;
- } else if (reader instanceof BMPImageReader) {
- type = TYPE_BMP;
- }
- reader.dispose();
- }
- } finally {
- if (bais != null) {
- try {
- bais.close();
- } catch (IOException ioe) {
- if (_log.isWarnEnabled()) {
- _log.warn(ioe);
- }
- }
- }
- if (mcis != null) {
- try {
- mcis.close();
- } catch (IOException ioe) {
- if (_log.isWarnEnabled()) {
- _log.warn(ioe);
- }
- }
- }
- }
- if (_log.isDebugEnabled()) {
- _log.debug("Detected type " + type);
- }
- return type;
- }
- private static Log _log = LogFactory.getLog(ImageUtil.class);
- }
注意:对gif格式的图片进行处理的时候,需要另外一下jar包:gif89.jar,因为gif格式的图片不能使用ImageIO进行输出。
如需将图片存放到数据库中,只需要修改红色部分,将图片以blob格式保存到数据库中,显示时以byte[]格式读出,使用ImageUtil.printImage()进行输出。
分享到:
相关推荐
关于在jsp页面上传图片的代码, Apache commons-fileupload是一个很好的文件上传工具,最近使用commons-fileupload实现了图片的上传及显示,可将图片保存在指定的文件夹中,也可以将图片存放在数据库,并支持四种常用...
上传图片时,选择图片之后显示在页面上,现成的代码,直接使用即可
1. 基于标准HTTP协议,支持ASP,ASP.NET(C#),ASP.NET(VB),JSP,PHP等服务端语言。 2. 支持BMP,JPG,GIF,...12. 显示上传进度。 13. 自定义图片水印。 14. 免费提供JavaScript SDK包,方便您将插件快速集成到已有网站中。
在最新版的图片上传控件中采用了全新的网络数据传输模块,新的模块全面优化了网络层的数据处理代码,同时在接收服务器返回的数据代码中采用精确识别的方式使数据处理效率更高。这些改进使图片上传控件具有了闪电般的...
第一次上传的代码有错,现在这个版本的,附带了正确的代码以及附带了jspSmartUpload.jar,直接解压缩后部署在Tomcat的webapps下即可。
在最新版的图片上传控件中采用了全新的网络数据传输模块,新的模块全面优化了网络层的数据处理代码,同时在接收服务器返回的数据代码中采用精确识别的方式使数据处理效率更高。这些改进使图片上传控件具有了闪电般的...
使用jsp+servlet实现图片的上传保存,有完整的可运行的代码。
在这里我说明一下,我举得例子是即时上传头像功能,记住,只能显示服务器上的图片,所以你的图像路径为服务器的路径,例如我的是img/wenjianming.jpg,看到了吧,img就是webcontent的一个文件夹,我把文件上传到这个...
具体参考:www.thinkerso.com thinker搜索 jsp+servlet上传图片的example,全部完整的代码
blob oracle 图片jsp 上传显示 jQuery缩略图显示 单独用参考
JSP网页编辑器CKEditor含图片上传功能,本编辑器中含有一个本地图片自动上传插件,插件使用JAVA技术开发,需要配合JavaScript使用,可以将网页中含有的本地图片(src为'file:///')自动上传到服务器并修改img标签的...
jsp中点击图片弹出文件上传界面及实现预览实例详解 花了两天时间琢磨一下图片预览的功能 任务需求如下: 1:jsp页面中有一个图片(pic_1) 2:点击图片弹出类似于资源管理器的界面 3:选择完某一个图片之后在pic_1处...
然后选择”上传“,选择图片文件之后,再点击“上传到服务器”,即可在“图像”标签栏显示预览图像,可以在此调整尺寸大小等参数,点击“确定”即可插入进去,提交之后会显示图片,不用修改任何代码 如果要插入到...
3.无论图片过大还是过小,都可以按照固定大小显示 4.支持亮度,对比度,饱和度修饰 5.支持头像拍照保存 6.支持php,asp,jsp,asp.net 调用 7.兼容性好,任何浏览器 IE10, IE9, IE8, IE7 IE 6 ,firefox, chrome 都...
java上传图片实时显示,兼容ie11,jsp页面代码,js代码,后台java代码一并打包。
管理员后台编辑器上传图片功能 后台对前台用户评论的设置功能,包括游客是否允许评论,会员是否允许评论,评论关键字过滤功能 商品收藏夹 订单管理 购物车功能 收货地址维护功能 系统 DIV+CSS界面设计 在线...
ajax上传的实现JSP环境带进度条,本程序可实现大常常用的文件上传、图片上传功能,希望大家喜欢。
代码如下:[removed] function setImagePreview() { var docObj=document.getElementById(“doc”); var imgObjPreview=document.getElementById(“preview”); if(docObj.files && docObj.files[0]){ //火狐下,直接...
"目录直读程序"可能是指一个能够读取并显示服务器上特定目录结构的JSP应用程序。这样的程序可能允许用户浏览文件和文件夹,查看文件列表,甚至可能包括下载、上传或管理这些文件的功能。这个资料包可能包含了实现这...
Ajax-upload 的JSP实现源码,运行于JSP环境,含相关的JAVA源代码,学习Java比较不错,同时本程序实现带上传进度条上传图片、文件等,上传程序是大家经常用到的模块,你可将本模块摘录出来用到你的JSP项目中。