有人做过用服务端组件动态生成图片吗?(200分)

  • 主题发起人 主题发起人 gdxkz
  • 开始时间 开始时间
G

gdxkz

Unregistered / Unconfirmed
GUEST, unregistred user!
只要用户输入文字,服务器自动把输入的文字放入一张JPG图片内,并输入这张图片。
不知道这种自动生成图片的足见怎么做!请高手指教!
 
不知道你的服务器是WEBSERVER,还是指什么?

如果是WEBSERVER不知道你为什么非要用这种方式,
直接用HTML代码,用层定义显示在一幅图片上面不就完了。

另,有关WEBSNAP请看下面的参考:
http://www.codelphi.com/hjwz/read.asp?ano=466
(需注册才能看)
 
Server是IIS。我是想在动态生成的条码上输出文字。
 
如果主机是你自己的话,可以通过ISAPI来动态生成图片,就好像CGI一样~
 
很Easy. 你是想放在isapi/cgi中, 还是做ASP组件? 实现的方法不太一样。

不过,前提是服务器是自己的。 外边的虚拟主机这两种东西都不支持 :(
 
两者都要用到Stream。如果你做ASP的组件,需要把Stream转换为Variant类型。
然后用Response.BinaryWrite(Variant)就可以了。 至于怎样把图片变成Stream
应该不用我说了吧 :)

下面这个函数是用来把Stream转换为Variant类型的,应该用得上。

function TMyObj.stmtovariant(stm:TStream):OleVariant;
var
size:Integer;
DataPtr:Pointer;
VarBound:TVarArrayBound;
Pkt:TDataPacket;
begin
size:=Stm.Size-Stm.Position;
if Size>0 then
begin
FreeDataPacket(Pkt);
FillChar(VarBound,Sizeof(VarBound),0);
VarBound.ElementCount:=Size;
Pkt:=TDataPacket(SafeArrayCreate(varByte,1,VarBound));
Try
SafeArrayAccessData(Pkt,DataPtr);
Try
Stm.Read(DataPtr^,Size);
Finally
SafeArrayUnAccessData(Pkt);
end;
Except
FreeDataPacket(Pkt);
raise;
end;
end;
DataPacketToVariant(Pkt,Result);

end;
 
如果作isapi或者cgi就更Easy了, 直接可以用:
Response.ContentType := 'image/gif';
Response.ContentStream := YourStream
//把图片变成Stream

至于在图片上画文字, 则需要Request。 比如 Request.QueryFields.Values['MyText'],
这样就可以获得浏览器中输入的 ?Mytext=xxxx了。

如果是Asp组件, 语句的形式有点区别, 自己去摸索吧。 提醒一点, 浏览器地址栏中
输入的和页面中表单中填入的Request形式是不一样的。
 
文字及图片都没问题,就是要2者合起来,并且图片要求可以是彩色图,我Try了一下,好象一定要BMP图,其他的格式的图不行
 
后退
顶部