有一字符串:str:='0x90CA6D1B6075AD0000000000CB4BA141145492819C4EDF7E004EE3968C3E0C3F874EBA68435F0B128E308543834F20611C579604033005428342894881511964865D110B935396608C33879E8F440E4B065391AD89618E0983558D5E873D07440A4D13520431079E8334023E865795AF01400A458230033C11330499105116'(255位).这是图片保存到数据库中的值.我现在想把这个值"直接"转换成图片,怎么办啊?
与此相关的我看了很多贴子了,都是关于图片和数据库之间的存取问题.我现在是想直接从某个地方读到此255位的值,然后我么写代码能在Image中显示啊?????????
与此相关的我看了很多贴子了,都是关于图片和数据库之间的存取问题.我现在是想直接从某个地方读到此255位的值,然后我么写代码能在Image中显示啊?????????
解决方案 »
- 用Delphi做大型项目如何构架?
- 求mxArrays 单元, dcu或pas都行
- 三层 adoconnection 问题
- 在delphi中使用sql语句说明
- USB(U盘问题)
- 请问以下查询中,为何没有查到记录,query1记录数显示为1?
- 关于TClientdata问题
- 请问各位大虾,怎能才能让QuickRep的Close按钮为中文?(急)
- 我关闭了“登陆框”,却关闭了整个程序,为什么?(在线等待,马上给分!)
- 同样的程序为什么在WIN98能杀进程,到了win2000Server就杀不掉了,怎么办?
- 一切发生的,必然发生,任何试图阻止他发生的,必然造就他的发生。
- Delphi5 使用紧急求救
LoadFromStream读出来就行了
那用管那么多的东西的啊
把它化做内存流SaveToStream
LoadFromStream读出来就行了
那用管那么多的东西的啊能不能给我一个具体一点的代码.把它化成内存流后,我想以十六进制的方式进行保存,以后再以这种方式找开图片,怎么弄啊??谢谢了
const
Hex: array[0..15] of char = '0123456789ABCDEF';
var
i: Integer;
begin
setlength(result, length(data) * 2);
for i := 0 to Len - 1 do
begin
result[i * 2 + 1] := Hex[data[i] shr 4];
result[i * 2 + 2] := Hex[data[i] and $F];
end;
end;procedure Hex2Int(var Data: array of Byte; const Source: string);
var
i: Integer;
Size: Integer;
Hex2: string;
begin
Size := Length(Source);
i := 0;
while i < Size do
begin
Hex2 := '$' + Source[i + 1] + Source[i + 2];
Data[i div 2] := StrToInt(Hex2);
inc(i, 2);
end;
end;function PicToHex(FileName:string):string; //图片转16进制字符串
var
f: file;
NumRead: integer;
Buffer: array[1..1024] of byte;
begin
AssignFile(f, FileName);
Reset(f, 1);
repeat
BlockRead(f, Buffer, BUF_SIZE, NumRead);
if NumRead = 0 then
break;
Result := Str2Hex(Buffer, NumRead); //将每个字节以16进制表示
until (NumRead = 0);
CloseFile(f);
end;//这样应用procedure TForm1.Button1Click(Sender: TObject);
var
PicHex: string;
buffer: array[1..1024] of Byte;
ms: TMemoryStream;
begin
PicHex:=PicToHex('C:\Up_Show.bmp');
ms := TMemoryStream.Create;
Hex2Int(buffer, PicHex);
ms.WriteBuffer(Buffer, Length(PicHex) div 2);
ms.Position := 0;
Image1.Picture.Bitmap.LoadFromStream(ms);
ms.free;
end;
一般按照24bit位图文件来算,1个像素占3个字节,800*600的图片就是800*600*3再加文件头信息,你自己算算有多少