BMP图片处理(50分)

  • 主题发起人 主题发起人 qwerty_417
  • 开始时间 开始时间
Q

qwerty_417

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把bmp图片转化成字符串格式输出
 
使用 Indy 的 TIdEncoderMIME 组件进行 base64 编码

procedure TForm1.Button1Click(Sender: TObject);
var
s: TFileStream;
begin
s := TFileStream.Create('c:/1.bmp',fmOpenRead);
try
Memo1.Text := IdEncoderMIME1.Encode(s);
finally
s.Free;
end;
end;

使用 TIdDecoderMIME 进行逆转换
 
关注一下!我也正在研究这个东西,楼主你的问题还没有问清楚呢!
 
可以用流的形式,也可以再转换一下,为什么一定要用字符呢,mssql的image字段好象是在sql传输的时候也是用的char的形式哈(没资料,猜的),转换的话
var stream:tmemorystream;
i:int64;
p:pchar;
begin
try
stream := tmemorystream.create;
tblobfield(AdoQuery1.fieldbyname('bmp')).savetostream(stream);
stream.postion :=0 ;//从0开始
p := getmem(stream.size * 2 + 1);
stream.postion :=0 ;//从0开始
stream.read(p,stream.size);
result := '';
for i:= 0 to length(p) - 1 do
begin
result := result + inttohex(ord(p),2);//转换16进制
end;
finally //无论如何 都 free掉 内存
stream.free;
p.free;
end;
end;

//result 就是 你想要的

当然 你如果想 只是取 图片 ,而不从字段来,可以变换一下
tblobfield(AdoQuery1.fieldbyname('bmp')).savetostream(stream);
改为
image1.Picture.Bitmap.SaveToStream(stream);
如果还不满意,将 image1.Picture.Bitmap.Canvas.Pixels 每个点 分别取出也可以,
否则,你只好分析bmp各种格式,再那个了
 
非常感谢bsense,liyinwei,问题已经解决.
 
后退
顶部