社区
Web 开发
帖子详情
怎样用JSP或者SERVELET把存放在服务器文件夹下的多幅图片合成一幅显示到浏览器页面?
qdltl
2008-03-20 03:01:09
我在服务器的某个文件夹下存放了几个文件,希望合成一幅后输出到页面。从网上看了一些例子,还是没找到合适的解决办法。
...全文
172
7
打赏
收藏
怎样用JSP或者SERVELET把存放在服务器文件夹下的多幅图片合成一幅显示到浏览器页面?
我在服务器的某个文件夹下存放了几个文件,希望合成一幅后输出到页面。从网上看了一些例子,还是没找到合适的解决办法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qdltl
2008-03-20
打赏
举报
回复
自己顶一下!
qdltl
2008-03-20
打赏
举报
回复
我有个思路是,用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>
qdltl
2008-03-20
打赏
举报
回复
[Quote=引用 1 楼 DiligencyMan 的回复:]
用ImageMagick吧,你上网搜索下,这个是专门对图片进行处理的!
[/Quote]
看了半天,也没看懂该怎么用法。还望高手赐教。
qdltl
2008-03-20
打赏
举报
回复
[Quote=引用 2 楼 beijixuem 的回复:]
关注中!为什么把多幅图片合成一幅图片呀?不能在同一个页面显示多张图片吗?
[/Quote]
用户需要将这张合成的图片Email给他的客户。
beijixuem
2008-03-20
打赏
举报
回复
关注中!为什么把多幅图片合成一幅图片呀?不能在同一个页面显示多张图片吗?
DiligencyMan
2008-03-20
打赏
举报
回复
用ImageMagick吧,你上网搜索下,这个是专门对图片进行处理的!
qdltl
2008-03-20
打赏
举报
回复
看来只能想别的办法了。结贴!
基于jdbc+
jsp
+
servele
t实现的图书管理系统
基于jdbc+
jsp
+
servele
t实现的图书管理系统基于jdbc+
jsp
+
servele
t实现的图书管理系统基于jdbc+
jsp
+
servele
t实现的图书管理系统基于jdbc+
jsp
+
servele
t实现的图书管理系统基于jdbc+
jsp
+
servele
t实现的图书管理系统基于...
jsp
+
servele
t+javabean
对于初学者的学习有一定的帮助,兄弟们,加油吧!未来不是梦。
Jsp
&
Servele
t 学习笔记
Jsp
&
Servele
t 学习笔记,总结经验,
Jsp
&
Servele
t 学习笔记(4)_
JSP
教程_www_knowsky_com.htm
Jsp
&
Servele
t 学习笔记(4)_
JSP
教程_www_knowsky_com.htm
html css javascript
jsp
servele
t等超详细教程
html css javascript
jsp
servele
t等超详细教程
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章