- 浏览: 17869 次
- 性别:
- 来自: 上海
最新评论
-
wangheid:
如果是用jquery 的话,可以ajaxSetup
Ajax处理数据时发现session过期之后,返回不到登入页面,大家讨论下啊 -
huang_qifu:
有没有完整的源码下载啊。我正在学习中很多都不懂。谢谢。。
使用 ...
applet中向servlet或者action中写object对象 -
transist:
有没有能够把用户上传的高清晰图片如bmp转换为jpg格式的工具 ...
上传图片并生成缩略图 -
doraemon1293:
OutputStream os = new FileOutpu ...
上传图片并生成缩略图 -
doraemon1293:
谢楼主分享
刚才乱弄一通,上传成功了,但是处理大图时会出现好 ...
上传图片并生成缩略图
最近公司说要在portal中添加一个上传图片并生成缩略图的方法,试了很久,终于搞定了;写下点心得吧,使大家少走弯路;
首先做之前,google了一下,发现很多生产缩略图的方法:
但是使用后发现,对于底色是透明的图片,生成的缩略图是别的颜色的,于是找原因,发现jpeg是最大的祸首;
现在修改代码:
其中使用了GifEncoder这也类,对应的jar包就是gif89.jar,这是个开源的包,做了修改,去掉了恶心的公司logo,现在生成的缩略图没有问题了,连gif的动画也能缩略,强啊
不用jmagick,直接用JAVA生成命令行执行处理
我觉得这个方法不错,项目中我也是这么做的。
只要在服务器上面安装这个就可以了,而且java项目,又有几个是跑在window上面的啊。
利用jni来调用本地的dll,应该可以的;但是问题是怎么玩的问题
不用jmagick,直接用JAVA生成命令行执行处理
用js来生成缩略图是可以,但是前提是你必须已经有image这个js对象,然后再new一个Image,按照比例进行缩放,是可以生成图片的;但是这种解决办法的问题是原来大的图片仍然需要取得,那还要生成缩略图干嘛呢,直接调节图片的大小就可以了嘛;
请教如何实现...
生成多张缩略尺寸又如何解决...
没有用过这个软件,看了下介绍还蛮好的,就是要安装,麻烦,大家可以试一试,看看下面一片文章
http://blog.donews.com/baggio785/archive/2005/12/28/674624.aspx
内容如下:
ImageMagick一个优秀的图像处理软件,JMagick是对ImageMagickJAVA面向对象化包装。
现在谈谈如何在WINDOWS环境下、LINUX环境下这两款软件的安装与使用。并制作了一个缩略图的产生程序。
1、安装
在WINDOWS下安装及使用都相当简单。先去下载IImageMagic WINDOWS的安装包,安装一把就可以了。安装完结之后,一般都把DLL加入到类路径中去了。安装最新版的就可以了(6.0.4版)
安装JMagick,直接得到它的二进制包就可以了(5.6.0)版。将JAR文件放到JAVA类路径下面,将DLL文件放到SYSTEM32目录下,就OK了。
在UNIX环境下安装比较麻烦。
偶这里是用TAR包安装的。先去下载,这里都使用5。6。0版本。
先安装ImageMagick
过程:
解开包文件
./configure 配置文件
make all
make install
就OK了。当然你在配置文件的时候,可以控制一些配置。以保证安装成功。
对JMagick也是同样操作。
解开包文件
./configure 配置文件
make all
make install
make test
一般测试通过就OK了。
生成的静态类库或动态类库一般位于/usr/local/lib目录下。
如果需要在程序中使用,需要输出LD_LIBRARY_PATH目录。就不多说了。
2、使用
以上是一个简单的生成缩略图的函数,可以EJB等处使用。
3、可能存在的问题及解决办法
在WEBLOGIC或者TOMCAT中使用。JMagick缺少是采用系统类加载器加载的,当然你也可以修改这个类加载器。
System.setProperty("jmagick.systemclassloader","no");
如采用如上的方法。
参考http://www.yeo.id.au/jmagick/ ,要在tomcat中使用JMagicK需要这三步:
1. Put Jmagick.jar in your WEBINF/lib dir
2. Put the following line in an initialization part of your webapp:
//Tell jmagick.magick.Magick to not use the system ClassLoader
System.setProperty("jmagick.systemclassloader","no");
3. make sure the Jmagick.dll and Imagemagick dlls are on the system
path
以上3步缺一不可
java.lang.UnsatisfiedLinkError: no JMagick in java.library.path
一般是没有输出库文件路径造成的。
NoDecodeDelegateForThisImageFormat: NoDecodeDelegateForThisImageFormat
一般是LINUX中没有安装一些SO文件造成的,可去下载来,在配置能看到输出的情况的,回答YES这个格式也就支持了。
同意。。。一般有这个要求的项目都用它。ImageMagick支持一些简单图片操作
首先做之前,google了一下,发现很多生产缩略图的方法:
BufferedImage img = ImageIO.read(file); int h = img.getHeight(); int w = img.getWidth(); if(h>=96 && w >=96){ int nw = 96; int nh = (nw * h) / w; if(nh>96) { nh = 96; nw = (nh * w) / h; } ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedImage dest = new BufferedImage(nw, nh, BufferedImage.TYPE_INT_RGB); dest.getGraphics().drawImage(img,0,0,nw, nh,null); ImageIO.write(dest, "jpeg", out); imageThumbnail = out.toByteArray(); } else{ imageThumbnail = imageData; }
但是使用后发现,对于底色是透明的图片,生成的缩略图是别的颜色的,于是找原因,发现jpeg是最大的祸首;
现在修改代码:
BufferedImage img = ImageIO.read(file); int h = img.getHeight(); int w = img.getWidth(); if(h>=96 && w >=96){ int nw = 96; int nh = (nw * h) / w; if(nh>96) { nh = 96; nw = (nh * w) / h; } ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedImage dest = new BufferedImage(nw, nh,BufferedImage.TYPE_4BYTE_ABGR); dest.getGraphics().drawImage(img,0,0,nw, nh,null); GifEncoder.encode(dest, out); //ImageIO.write(dest, "gif", out); imageThumbnail = out.toByteArray(); } else{ imageThumbnail = imageData; }
其中使用了GifEncoder这也类,对应的jar包就是gif89.jar,这是个开源的包,做了修改,去掉了恶心的公司logo,现在生成的缩略图没有问题了,连gif的动画也能缩略,强啊
- gif89.jar (10.8 KB)
- 下载次数: 2722
评论
31 楼
transist
2008-10-24
有没有能够把用户上传的高清晰图片如bmp转换为jpg格式的工具包?主要为了减少图片的大小
30 楼
doraemon1293
2008-10-24
OutputStream os = new FileOutputStream("路径");
BufferedImage dest = new BufferedImage(nw,nh,BufferedImage.TYPE_4BYTE_ABGR);
dest.getGraphics().drawImage(img,0,0,nw, nh,null);
GifEncoder.encode(dest, os);
os.close();
BufferedImage dest = new BufferedImage(nw,nh,BufferedImage.TYPE_4BYTE_ABGR);
dest.getGraphics().drawImage(img,0,0,nw, nh,null);
GifEncoder.encode(dest, os);
os.close();
29 楼
doraemon1293
2008-10-24
谢楼主分享
刚才乱弄一通,上传成功了,但是处理大图时会出现好多黑点.. 求完整版
刚才乱弄一通,上传成功了,但是处理大图时会出现好多黑点.. 求完整版
28 楼
mickeymak
2008-08-18
lz可以提供完整的代码吗?
imageThumbnail = out.toByteArray();
imageThumbnail = imageData;
中的imageThumbnail, imageData是什么变量? 生成的缩略图是放在哪里的?
imageThumbnail = out.toByteArray();
imageThumbnail = imageData;
中的imageThumbnail, imageData是什么变量? 生成的缩略图是放在哪里的?
27 楼
yewen001
2008-08-18
是压缩所有的图片吗?用gif,png,bmp文件好像不行吧!
26 楼
tianlan
2008-04-17
25 楼
domando
2008-03-08
RoyMax 写道
yyjn12 写道
目前java处理图片还没有一个说的上好用的解决方案的.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
不用jmagick,直接用JAVA生成命令行执行处理
我觉得这个方法不错,项目中我也是这么做的。
只要在服务器上面安装这个就可以了,而且java项目,又有几个是跑在window上面的啊。
24 楼
waitmannee
2008-03-06
suyulin6688 写道
ImageMagick和JMagick可以不安装,然后通过jar和dll来调用吗?
利用jni来调用本地的dll,应该可以的;但是问题是怎么玩的问题
23 楼
ray_linn
2008-03-05
好象没人用jimi??
22 楼
suyulin6688
2008-03-05
ImageMagick和JMagick可以不安装,然后通过jar和dll来调用吗?
21 楼
zelsa
2008-02-27
jmagick 对CMYK色的图片处理有点问题
20 楼
RoyMax
2008-02-27
yyjn12 写道
目前java处理图片还没有一个说的上好用的解决方案的.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
不用jmagick,直接用JAVA生成命令行执行处理
19 楼
waitmannee
2008-02-18
weifly 写道
用js生成缩略图,没有听说过,还是应该在服务器上生成,毕竟图片的生成,计算还是比较复杂的
用js来生成缩略图是可以,但是前提是你必须已经有image这个js对象,然后再new一个Image,按照比例进行缩放,是可以生成图片的;但是这种解决办法的问题是原来大的图片仍然需要取得,那还要生成缩略图干嘛呢,直接调节图片的大小就可以了嘛;
18 楼
yyjn12
2008-02-18
目前java处理图片还没有一个说的上好用的解决方案的.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
java本身的这种api处理图片,当压缩到尺寸比较小时,会有明显的模糊及锯齿效果,极其恶心.
一种可选的方案是使用imagemagick.不过这是个软件,需要安装的.用java的jni来本地调用.有个叫jmagick的项目.也需要安装.并且两个东西安装极其困难,主要是版本的匹配.在官网找不到历史版本.
image magick + jmagick 可以说是从图片处理效果上来说最棒的java的方案了.jni本地调用人家的专业软件嘛.注意,仅仅是从效果上说.
不过jmagick这个项目委实叫人不敢恭维.
17 楼
weifly
2008-02-18
用js生成缩略图,没有听说过,还是应该在服务器上生成,毕竟图片的生成,计算还是比较复杂的
16 楼
praguesky
2008-02-17
aumy2008 写道
如果是在上传前生成缩略图 ,就不用那么麻烦,直接用js就行了。
请教如何实现...
生成多张缩略尺寸又如何解决...
15 楼
lin_zy
2008-01-03
支持不错,我一直就用这方法
14 楼
waitmannee
2007-12-25
lszone 写道
用ImageMagick不好吗?这么麻烦
没有用过这个软件,看了下介绍还蛮好的,就是要安装,麻烦,大家可以试一试,看看下面一片文章
http://blog.donews.com/baggio785/archive/2005/12/28/674624.aspx
内容如下:
ImageMagick一个优秀的图像处理软件,JMagick是对ImageMagickJAVA面向对象化包装。
现在谈谈如何在WINDOWS环境下、LINUX环境下这两款软件的安装与使用。并制作了一个缩略图的产生程序。
1、安装
在WINDOWS下安装及使用都相当简单。先去下载IImageMagic WINDOWS的安装包,安装一把就可以了。安装完结之后,一般都把DLL加入到类路径中去了。安装最新版的就可以了(6.0.4版)
安装JMagick,直接得到它的二进制包就可以了(5.6.0)版。将JAR文件放到JAVA类路径下面,将DLL文件放到SYSTEM32目录下,就OK了。
在UNIX环境下安装比较麻烦。
偶这里是用TAR包安装的。先去下载,这里都使用5。6。0版本。
先安装ImageMagick
过程:
解开包文件
./configure 配置文件
make all
make install
就OK了。当然你在配置文件的时候,可以控制一些配置。以保证安装成功。
对JMagick也是同样操作。
解开包文件
./configure 配置文件
make all
make install
make test
一般测试通过就OK了。
生成的静态类库或动态类库一般位于/usr/local/lib目录下。
如果需要在程序中使用,需要输出LD_LIBRARY_PATH目录。就不多说了。
2、使用
private boolean genearateSumImg(String orgImg) { boolean result = false; //取得原文件 try { MagickImage image = new MagickImage( new ImageInfo( orgImg ) ); int scalex = 80; int scaley = 80; MagickImage small = image.scaleImage( scalex,scaley); small.setFileName( orgImg+IMAGE_SUM_POSTFIX); small.writeImage( new ImageInfo() ); result = true; } catch (Exception e1) { e1.printStackTrace(); } return result; }
以上是一个简单的生成缩略图的函数,可以EJB等处使用。
3、可能存在的问题及解决办法
在WEBLOGIC或者TOMCAT中使用。JMagick缺少是采用系统类加载器加载的,当然你也可以修改这个类加载器。
System.setProperty("jmagick.systemclassloader","no");
如采用如上的方法。
参考http://www.yeo.id.au/jmagick/ ,要在tomcat中使用JMagicK需要这三步:
1. Put Jmagick.jar in your WEBINF/lib dir
2. Put the following line in an initialization part of your webapp:
//Tell jmagick.magick.Magick to not use the system ClassLoader
System.setProperty("jmagick.systemclassloader","no");
3. make sure the Jmagick.dll and Imagemagick dlls are on the system
path
以上3步缺一不可
java.lang.UnsatisfiedLinkError: no JMagick in java.library.path
一般是没有输出库文件路径造成的。
NoDecodeDelegateForThisImageFormat: NoDecodeDelegateForThisImageFormat
一般是LINUX中没有安装一些SO文件造成的,可去下载来,在配置能看到输出的情况的,回答YES这个格式也就支持了。
13 楼
waitmannee
2007-12-25
在csdn上看到一篇文章,写到一个生成缩略图的方法,试用了一下,还不错,唯一的缺点就是不能处理gif的动画,对于gif的动画,只会产生对应的静态图片
reference:http://topic.csdn.net/t/20060603/15/4798174.html
处理图片代码:
reference:http://topic.csdn.net/t/20060603/15/4798174.html
处理图片代码:
package Image; import java.awt.image.BufferedImage; public class ScaleImage { private int width; private int height; private int scaleWidth; private double support = (double) 3.0; private double PI = (double) 3.14159265358978; private double[] contrib; private double[] normContrib; private double[] tmpContrib; private int startContrib, stopContrib; private int nDots; private int nHalfDots; /** * Start: Use Lanczos filter to replace the original algorithm for image * scaling. Lanczos improves quality of the scaled image modify by :blade */ private static ScaleImage instance = new ScaleImage(); private ScaleImage(){}; public static ScaleImage getInstance(){ return instance; } public BufferedImage imageZoomOut(BufferedImage srcBufferImage, int w, int h) { width = srcBufferImage.getWidth(); height = srcBufferImage.getHeight(); scaleWidth = w; if (DetermineResultSize(w, h) == 1) { return srcBufferImage; } CalContrib(); BufferedImage pbOut = HorizontalFiltering(srcBufferImage, w); BufferedImage pbFinalOut = VerticalFiltering(pbOut, h); return pbFinalOut; } /** * 决定图像尺寸 */ private int DetermineResultSize(int w, int h) { double scaleH, scaleV; scaleH = (double) w / (double) width; scaleV = (double) h / (double) height; // 需要判断一下scaleH,scaleV,不做放大操作 if (scaleH >= 1.0 && scaleV >= 1.0) { return 1; } return 0; } // end of DetermineResultSize() private double Lanczos(int i, int inWidth, int outWidth, double Support) { double x; x = (double) i * (double) outWidth / (double) inWidth; return Math.sin(x * PI) / (x * PI) * Math.sin(x * PI / Support) / (x * PI / Support); } // end of Lanczos() // // Assumption: same horizontal and vertical scaling factor // private void CalContrib() { nHalfDots = (int) ((double) width * support / (double) scaleWidth); nDots = nHalfDots * 2 + 1; try { contrib = new double[nDots]; normContrib = new double[nDots]; tmpContrib = new double[nDots]; } catch (Exception e) { System.out.println("init contrib,normContrib,tmpContrib" + e); } int center = nHalfDots; contrib[center] = 1.0; double weight = 0.0; int i = 0; for (i = 1; i <= center; i++) { contrib[center + i] = Lanczos(i, width, scaleWidth, support); weight += contrib[center + i]; } for (i = center - 1; i >= 0; i--) { contrib[i] = contrib[center * 2 - i]; } weight = weight * 2 + 1.0; for (i = 0; i <= center; i++) { normContrib[i] = contrib[i] / weight; } for (i = center + 1; i < nDots; i++) { normContrib[i] = normContrib[center * 2 - i]; } } // end of CalContrib() // 处理边缘 private void CalTempContrib(int start, int stop) { double weight = 0; int i = 0; for (i = start; i <= stop; i++) { weight += contrib[i]; } for (i = start; i <= stop; i++) { tmpContrib[i] = contrib[i] / weight; } } // end of CalTempContrib() private int GetRedValue(int rgbValue) { int temp = rgbValue & 0x00ff0000; return temp >> 16; } private int GetGreenValue(int rgbValue) { int temp = rgbValue & 0x0000ff00; return temp >> 8; } private int GetBlueValue(int rgbValue) { return rgbValue & 0x000000ff; } private int ComRGB(int redValue, int greenValue, int blueValue) { return (redValue << 16) + (greenValue << 8) + blueValue; } // 行水平滤波 private int HorizontalFilter(BufferedImage bufImg, int startX, int stopX, int start, int stop, int y, double[] pContrib) { double valueRed = 0.0; double valueGreen = 0.0; double valueBlue = 0.0; int valueRGB = 0; int i, j; for (i = startX, j = start; i <= stopX; i++, j++) { valueRGB = bufImg.getRGB(i, y); valueRed += GetRedValue(valueRGB) * pContrib[j]; valueGreen += GetGreenValue(valueRGB) * pContrib[j]; valueBlue += GetBlueValue(valueRGB) * pContrib[j]; } valueRGB = ComRGB(Clip((int) valueRed), Clip((int) valueGreen), Clip((int) valueBlue)); return valueRGB; } // end of HorizontalFilter() // 图片水平滤波 private BufferedImage HorizontalFiltering(BufferedImage bufImage, int iOutW) { int dwInW = bufImage.getWidth(); int dwInH = bufImage.getHeight(); int value = 0; BufferedImage pbOut = new BufferedImage(iOutW, dwInH, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < iOutW; x++) { int startX; int start; int X = (int) (((double) x) * ((double) dwInW) / ((double) iOutW) + 0.5); int y = 0; startX = X - nHalfDots; if (startX < 0) { startX = 0; start = nHalfDots - X; } else { start = 0; } int stop; int stopX = X + nHalfDots; if (stopX > (dwInW - 1)) { stopX = dwInW - 1; stop = nHalfDots + (dwInW - 1 - X); } else { stop = nHalfDots * 2; } if (start > 0 || stop < nDots - 1) { CalTempContrib(start, stop); for (y = 0; y < dwInH; y++) { value = HorizontalFilter(bufImage, startX, stopX, start, stop, y, tmpContrib); pbOut.setRGB(x, y, value); } } else { for (y = 0; y < dwInH; y++) { value = HorizontalFilter(bufImage, startX, stopX, start, stop, y, normContrib); pbOut.setRGB(x, y, value); } } } return pbOut; } // end of HorizontalFiltering() private int VerticalFilter(BufferedImage pbInImage, int startY, int stopY, int start, int stop, int x, double[] pContrib) { double valueRed = 0.0; double valueGreen = 0.0; double valueBlue = 0.0; int valueRGB = 0; int i, j; for (i = startY, j = start; i <= stopY; i++, j++) { valueRGB = pbInImage.getRGB(x, i); valueRed += GetRedValue(valueRGB) * pContrib[j]; valueGreen += GetGreenValue(valueRGB) * pContrib[j]; valueBlue += GetBlueValue(valueRGB) * pContrib[j]; // System.out.println(valueRed+"->"+Clip((int)valueRed)+"<-"); // // System.out.println(valueGreen+"->"+Clip((int)valueGreen)+"<-"); // System.out.println(valueBlue+"->"+Clip((int)valueBlue)+"<-"+"-->"); } valueRGB = ComRGB(Clip((int) valueRed), Clip((int) valueGreen), Clip((int) valueBlue)); // System.out.println(valueRGB); return valueRGB; } // end of VerticalFilter() private BufferedImage VerticalFiltering(BufferedImage pbImage, int iOutH) { int iW = pbImage.getWidth(); int iH = pbImage.getHeight(); int value = 0; BufferedImage pbOut = new BufferedImage(iW, iOutH, BufferedImage.TYPE_INT_RGB); for (int y = 0; y < iOutH; y++) { int startY; int start; int Y = (int) (((double) y) * ((double) iH) / ((double) iOutH) + 0.5); startY = Y - nHalfDots; if (startY < 0) { startY = 0; start = nHalfDots - Y; } else { start = 0; } int stop; int stopY = Y + nHalfDots; if (stopY > (int) (iH - 1)) { stopY = iH - 1; stop = nHalfDots + (iH - 1 - Y); } else { stop = nHalfDots * 2; } if (start > 0 || stop < nDots - 1) { CalTempContrib(start, stop); for (int x = 0; x < iW; x++) { value = VerticalFilter(pbImage, startY, stopY, start, stop, x, tmpContrib); pbOut.setRGB(x, y, value); } } else { for (int x = 0; x < iW; x++) { value = VerticalFilter(pbImage, startY, stopY, start, stop, x, normContrib); pbOut.setRGB(x, y, value); } } } return pbOut; } // end of VerticalFiltering() private int Clip(int x) { if (x < 0) return 0; if (x > 255) return 255; return x; } /** * End: Use Lanczos filter to replace the original algorithm for image * scaling. Lanczos improves quality of the scaled image modify by :blade */ }
12 楼
ice123456
2007-12-24
lszone 写道
用ImageMagick不好吗?这么麻烦
同意。。。一般有这个要求的项目都用它。ImageMagick支持一些简单图片操作
发表评论
-
tomcat session集群中的注销问题
2018-01-11 11:03 967tomcat集群中,集成了tomcat-redis-sess ... -
Portal中读取cookie
2009-02-06 11:23 1646Cookie[] cookies = ((RenderRe ... -
Ajax处理数据时发现session过期之后,返回不到登入页面,大家讨论下啊
2008-12-01 10:49 2343前几天被一个问题拦住了,在页面和服务器交互的过程中,添加了很多 ... -
applet中向servlet或者action中写object对象
2008-02-29 15:31 1543在applet中向action或者servlet写Object ...
相关推荐
总结来说,基于Springmvc的图片上传和生成缩略图功能涉及以下几个关键步骤:配置Springmvc支持文件上传,编写Controller处理上传请求,生成并保存缩略图,以及与前端交互提供反馈。这些步骤都需要对Springmvc、文件I...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...
在这个特定的场景中,"JSP上传图片并生成缩略图"是一个常见的功能需求,尤其是在开发包含用户交互和多媒体内容的Web应用时。下面我们将详细探讨这一技术实现的关键知识点。 首先,**上传组件**是Web应用中用于接收...
- 通过条件判断决定是基于宽度还是高度来生成缩略图。 6. **保存缩略图:** - 生成缩略图后,将其保存到指定路径下。 - 可以在文件名中加入特定标识符,例如“_thumb”,以便于区分原图和缩略图。 7. **返回...
在图片上传场景中,这使得我们可以在用户选择图片后立即进行处理,例如生成缩略图。 2. **Canvas**:Canvas是HTML5的一个重要组成部分,它是一个可编程的图形区域,可以通过JavaScript来绘制图形。在图片预览和缩略...
在ASP.NET中,上传图片并生成缩略图和水印图是一项常见的需求,特别是在创建网站或者应用程序时,需要处理用户上传的图像。以下是一个关于如何在ASP.NET中实现这个功能的详细说明。 首先,上传图片是通过HTML的`...
### 在ASP.NET中上传图片并生成缩略图 在Web应用开发中,处理用户上传的图片是一项常见的功能需求。尤其对于那些需要展示图像的应用(如博客、电子商务网站等),能够高效地处理这些图像,包括上传原始图片以及自动...
FLASH+PHP上传,返回值到当前页面,可以自定义传送值到PHP上传处理的页面,这样就可以定义接受图片...update.php逻辑处理,file_upload.php上传类,可定义源文件名或者随机命名和缩略图大小. 没分了,来赚点积分花花
在这个"asp无组件上传图片,aspjpeg生成缩略图和添加水印.zip"压缩包中,包含了解决这一问题的代码示例。主要涉及到以下几个核心知识点: 1. **图片上传**: ASP可以通过表单提交实现图片文件的上传。用户选择本地...
在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...
在这个场景中,我们将关注如何使用Struts2框架结合FileUpload库来实现图片上传,并通过生成缩略图来优化用户体验。Struts2是一个流行的Java Web框架,它提供了一种结构化的方式来处理用户请求,而FileUpload则是处理...
"js实现上传图片即刻生成缩略图预览"这个功能就是为了让用户体验更加流畅,允许他们在上传图片的同时立即查看预览效果,而无需等待完整的图片加载。这在处理大尺寸或者高分辨率图片时尤其有用,因为生成的缩略图可以...
使用jspsmartupload实现图片的批量上传,并保存到服务器的指定路径,自动生成缩略图,与图片的路径相同。(需要导入jspsmartupload.jar,在工程下的WebContent\WEB-INF\lib中 )
预览图片后,我们可能还需要生成缩略图,以减小数据传输量或适应不同的展示尺寸。这里我们可以利用HTML5的Canvas元素。 1. 创建一个canvas元素,并获取其2D渲染上下文。 ```javascript var canvas = document....
在这个特定的场景中,"jSP上传图片生成缩略图"是一个常见的需求,尤其在网站开发中,如论坛、博客或电商网站等,用户可能需要上传图片,而为了提高页面加载速度和优化用户体验,通常会生成缩略图作为预览。...
接着,前端或后端生成缩略图并保存。对于大型网站或应用,为了提高效率,还可以采用异步处理,即先将原始图片存储,然后在后台生成缩略图。 文件名"myupload"可能指的是一个与多图片上传相关的文件,可能包含了实现...
ASP.NET 实现上传图片并生成缩略图的方法 该文档介绍了使用 ASP.NET 实现上传图片并生成缩略图的方法。首先,通过检查上传文件的格式是否有效,以确保上传的文件是图片格式。如果不是图片格式,則显示错误信息...