如何在www页面中动态生成并显示一幅图片?(62分)

  • 主题发起人 主题发起人 sleepy
  • 开始时间 开始时间
S

sleepy

Unregistered / Unconfirmed
GUEST, unregistred user!
访问华云坊(现在叫什么易得方舟)主页的一定会注意他们主页上显示投票结果的饼图(是一个动态生成的文件),请问这样的图片该怎样动态生成并显示呢?

用孙老师的 asp+Delphi Ole Automation能实现吗? 该怎样做程序呢?
可惜只剩下这点分了 :(
 
为什么不用delphi呢?多简单牙!

这个统计图是我用delphi做的: http://www.wenhua.com.cn/main.asp
 
我是想用Delphi呀,呵呵。但是怎么做? :)
估计是dll或者exe吧,然后怎样和asp结合起来? 我不太清楚的说,呵呵.
能告诉我大致的步骤吗?
 
用Delphi生成CGI/WinCGI或ISAPI/NSAPI工程,
输出图象的代码如下:
//<B>..../DelphiX/Demo/WebServ/Main.pas</B>
procedure TCustomerInfoModule.CustomerInfoModuleGetImageAction(
Sender: TObject; Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
var
Jpg: TJpegImage;
S: TMemoryStream;
B: TBitmap;
begin
Jpg := TJpegImage.Create;//创建图象
try
//给图象赋内容
B := TBitmap.Create;
try
B.Assign(BioLifeGraphic);
Jpg.Assign(B);
finally
B.Free;
end;

//保存到流
S := TMemoryStream.Create;
Jpg.SaveToStream(S);

//输出流
S.Position := 0;
Response.ContentType := 'image/jpeg';
Response.ContentStream := S; //不需要释放S
//这个操作将由Response对象完成
finally
Jpg.Free;
end;
end;

剩下就是动态生成图象的问题了,这么简单就不用说了吧?
 
说起来话长了.....

1.首先用delphi做一个cgi,能够读取数据库内容,然后动态生成图片并返回的,
假定名字是abc.exe
2.在网页里面这样写html语句:
<img src="/cgi-bin/abc.exe"> //当然,路径根据你自己的实际情况写

现在就已经成功了,其实和ASP没有什么关系,当然如果你要用ASP代替html是一样的.

哦,忘了最重要的一点,用delphi做返回图片的CGI:
程序大致是这样的:
var bmp:tbitmap;
query:tquery;
s:tmemorystream;
begin
query.sql.add(.....); //打开数据库,提取统计数字;
...
bmp:=tbitmap.create;
with bmp.canvas do
begin
//在bitmap上面画你的图形(画画总该会吧?)
end;

s:=tmemorystream.create; //生成一个流
bmp.SaveToStream(s); //图片信息保存到这个流里面
s.Position:=0;

response.contenttype:='image/bitmap'; //通知浏览器返回的是一个图片
response.sendstream(s); //发送图片数据

s.free; //释放资源
bmp.free;
end;

记住,最后一定要把所有资源释放/,否则你的站点用不了几天就瘫痪.
 
用jpeg格式也可以. 如果安装了gifimage,还可以生成gif图片.
 
搞定,呵呵,谢谢两位啦!
 
多人接受答案了。
 
hi sleepy
你能不能把生成饼图的代码给我看看呀,我不会画图呀,现在有一个项目要生成饼图的
而且很急,不知道你能不能把代码寄给我,谢谢!!!
我的email是knightlzf@163.net
谢谢
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部