怎样用JSP或者SERVELET把存放在服务器文件夹下的多幅图片合成一幅显示到浏览器页面? 我在服务器的某个文件夹下存放了几个文件,希望合成一幅后输出到页面。从网上看了一些例子,还是没找到合适的解决办法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用ImageMagick吧,你上网搜索下,这个是专门对图片进行处理的! 用户需要将这张合成的图片Email给他的客户。 我有个思路是,用SERVELET。用Image读入图片,然后在Graphics中合成,然后用流输出到页面。有两个问题,我还没弄明白:1、Graphics可以不可以在SERVELET中使用?2、如何将Graphics中的图片输出到流。请高手给鉴定一下可行性。这里有一个APPLET合成图像的例子,供参考。我想知道怎么在JSP中实现。下面的程序对两个图像进行合成并显示来模拟图像的淡入淡出.程序运行后,每按一次向上键,前景图像就增强一点,每按一次向下键,前景图像就减弱一点.首先你要了解图像数据.每个象素点的信息由一个整数表达.整数共32个二进制位,从左向右,分成四个部分,每部分都是8位.第一部分: Alpha 信息.控制图像显示的强度.下面的程序就是通过调整这个数值控制图像的淡入淡出.第二部分:红色数据.第三部分:绿色数据.第四部分:蓝色数据.程序使用的方法是:先画背景图像,再在上面画带Alpha数据的前景图像,通过调整Alpha值使前景图像淡入 淡出.import java.applet.*;import java.awt.*;import java.awt.image.*;public class alpha extends Applet{Image background, foreground;//背景图像和前景图像Image foreground_new;//依据前景图像生成的带Alpha通道的新图像MediaTracker mt;int foreground_alpha=175;//前景图像的起始Alpha值int foreground_data[];//用来生成新图像的内存数据PixelGrabber pg;int transparancy;//前景图像的全透明点的像素值.只要前景图像的某个点是这个值,它就全透明public void init(){background=getImage(getCodeBase(),"mama.gif");foreground=getImage(getCodeBase(),"baba.gif");mt=new MediaTracker(this);mt.addImage(background,1);mt.addImage(foreground,2);try{mt.waitForAll();} // 等待所有图片的数据都被正确载入catch(InterruptedException e){ }foreground_data=new int[foreground.getWidth(this) * foreground.getHeight(this)];//初始化//下面把前景图片的数据载入数组pg=new PixelGrabber(foreground,0,0,foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this));try{pg.grabPixels();}catch(InterruptedException e){ }for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)foreground_data[i]=foreground_data[i]&0x00ffffff;//把所有的象素的Alpha值置为0//下面我把图像左上角的点的值作为透明值.假如图像中哪个点的值和左上角的点的值一样,//这个点就全透明--背景100%出现.我用这个比较简单的办法把前景图像中我不想要的部分去掉transparancy=foreground_data[0];}public void paint(Graphics g){g.drawImage(background,0,0,this);}public boolean keyDown(Event e, int key){if (key==Event.UP && foreground_alpha<255)//依据按键改变Alpha值foreground_alpha++;if (key==Event.DOWN && foreground_alpha>0)foreground_alpha--;showStatus(String.valueOf(foreground_alpha));//在状态栏显示Alpha值for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)//逐点处理{foreground_data[i]=foreground_data[i] & 0x00ffffff;//置此点为全透明if (foreground_data[i]!=transparancy)//假如这个点的值和全透明点不同foreground_data[i]=foreground_data[i] | (foreground_alpha<<24);//给它Alpha值}foreground_new=createImage(new MemoryImageSource(foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this)));//生成前景图象mt.addImage(foreground_new,3);try{mt.waitForID(3);} catch(InterruptedException e2){ }getGraphics().drawImage(background,0,0,this);//先画背景getGraphics().drawImage(foreground_new,100,100,this);//再画前景return true;}}下面是HTML文件:<APPLET CODE="alpha.class"WIDTH=300 HEIGHT=300></APPLET> 关于javaweb项目中连接数据库的问题!! 求ssh2框架整合视频 在线等,请各位帮忙 Jsp中的现对路径 [EXT]这段简单的EXT代码, STORE为何得不到数据? 怎么在网页打开时就加载数据库里的资料 请教 SC_INTERNAL_SERVER_ERROR 500错误 小弟初学java,不知道socket为何物,请高手指点(具体点啊) ▲▲▲请问Web开发工具哪个好,php,jsp,javascript,.net????▲▲▲ 请问在Tomcat下,Session的开始和结束事件在那里定义? 在客户端不用控件能不能实现对上传附件大小的限制? 关于officer的使用
用户需要将这张合成的图片Email给他的客户。
这里有一个APPLET合成图像的例子,供参考。我想知道怎么在JSP中实现。下面的程序对两个图像进行合成并显示来模拟图像的淡入淡出.程序运行后,每按一次向上键,前景图像就增强一点,每按一次向下键,前景图像就减弱一点.首先你要了解图像数据.每个象素点的信息由一个整数表达.整数共32个二进制位,从左向右,分成四个部分,每部分都是8位.第一部分: Alpha 信息.控制图像显示的强度.下面的程序就是通过调整这个数值控制图像的淡入淡出.第二部分:红色数据.第三部分:绿色数据.第四部分:蓝色数据.程序使用的方法是:先画背景图像,再在上面画带Alpha数据的前景图像,通过调整Alpha值使前景图像淡入 淡出.import java.applet.*;import java.awt.*;import java.awt.image.*;public class alpha extends Applet{Image background, foreground;//背景图像和前景图像Image foreground_new;//依据前景图像生成的带Alpha通道的新图像MediaTracker mt;int foreground_alpha=175;//前景图像的起始Alpha值int foreground_data[];//用来生成新图像的内存数据PixelGrabber pg;int transparancy;//前景图像的全透明点的像素值.只要前景图像的某个点是这个值,它就全透明public void init(){background=getImage(getCodeBase(),"mama.gif");foreground=getImage(getCodeBase(),"baba.gif");mt=new MediaTracker(this);mt.addImage(background,1);mt.addImage(foreground,2);try{mt.waitForAll();} // 等待所有图片的数据都被正确载入catch(InterruptedException e){ }foreground_data=new int[foreground.getWidth(this) * foreground.getHeight(this)];//初始化//下面把前景图片的数据载入数组pg=new PixelGrabber(foreground,0,0,foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this));try{pg.grabPixels();}catch(InterruptedException e){ }for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)foreground_data[i]=foreground_data[i]&0x00ffffff;//把所有的象素的Alpha值置为0//下面我把图像左上角的点的值作为透明值.假如图像中哪个点的值和左上角的点的值一样,//这个点就全透明--背景100%出现.我用这个比较简单的办法把前景图像中我不想要的部分去掉transparancy=foreground_data[0];}public void paint(Graphics g){g.drawImage(background,0,0,this);}public boolean keyDown(Event e, int key){if (key==Event.UP && foreground_alpha<255)//依据按键改变Alpha值foreground_alpha++;if (key==Event.DOWN && foreground_alpha>0)foreground_alpha--;showStatus(String.valueOf(foreground_alpha));//在状态栏显示Alpha值for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)//逐点处理{foreground_data[i]=foreground_data[i] & 0x00ffffff;//置此点为全透明if (foreground_data[i]!=transparancy)//假如这个点的值和全透明点不同foreground_data[i]=foreground_data[i] | (foreground_alpha<<24);//给它Alpha值}foreground_new=createImage(new MemoryImageSource(foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this)));//生成前景图象mt.addImage(foreground_new,3);try{mt.waitForID(3);} catch(InterruptedException e2){ }getGraphics().drawImage(background,0,0,this);//先画背景getGraphics().drawImage(foreground_new,100,100,this);//再画前景return true;}}下面是HTML文件:<APPLET CODE="alpha.class"WIDTH=300 HEIGHT=300></APPLET>