jpg2hex行,但是hextojpg就不行,出现jpeg error #51 请问是为什么啊?弄了一天了procedure tform1.hex2jpg(str:string;out jpg:tjpegimage); var stream:tmemorystream;begin if not assigned(jpg) then jpg:=tjpegimage.create; stream:=tmemorystream.create; stream.setsize(length(str)div 2); hextobin(pchar(str),stream.memory,stream.size); jpg.loadfromstream(stream); stream.free; end;procedure TForm1.Button1Click(Sender: TObject); var jpg:tjpegimage; begin jpg:=tjpegimage.Create; hex2jpg(memo1.text,jpg); canvas.draw(0,0,jpg); jpg.free; end;function tform1.jpg2hex(jpg:tjpegimage):string; var stream:tmemorystream; begin stream:=tmemorystream.Create; jpg.SaveToStream(stream); setlength(result,stream.size * 2); bintohex(stream.Memory,pchar(result),stream.size); stream.free; end;procedure TForm1.Button2Click(Sender: TObject); var jpg:tjpegimage; begin jpg:=tjpegimage.Create; jpg.loadfromfile('d:\2011.jpg'); memo1.text:=jpg2hex(jpg); jpg.Free;end;end.
var Form1: TForm1; str:String; implementation{$R *.dfm} procedure tform1.hex2jpg(str:string;out jpg:tjpegimage); var stream:tmemorystream;begin if not assigned(jpg) then jpg:=tjpegimage.create; stream:=tmemorystream.create; stream.setsize(length(str)div 2); hextobin(pchar(str),stream.memory,stream.size); jpg.loadfromstream(stream); stream.free; end;function tform1.jpg2hex(jpg:tjpegimage):string; var stream:tmemorystream; begin stream:=tmemorystream.Create; jpg.SaveToStream(stream); setlength(result,stream.size * 2); bintohex(stream.Memory,pchar(result),stream.size); stream.free; end;procedure TForm1.Button2Click(Sender: TObject); var jpg:tjpegimage; begin jpg:=tjpegimage.Create; hex2jpg(str,jpg); jpg.SaveToFile('c:\test.jpg'); Image1.Canvas.Draw(0,0,jpg); jpg.free; end;procedure TForm1.Button1Click(Sender: TObject); var jpg:TJPEGImage; begin jpg:=TJPEGImage.Create; jpg.LoadFromFile('C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Winter.jpg'); str:=jpg2hex(jpg); end;我用的可以啊
能具体点吗? ms:tmemorystream;
jpeg:tjpegimage;
begin
ms:=tmemorystream.Create;
jpeg:=TJPEGIMAGE.Create;
// strsql:='insert into image2(image)values(:bBlob)';
memo1.text:=LAST;
showmessage(memo1.Lines[0]);
MEMO1.lines.SaveToStream(ms);
ms.Position:=0;
//mmreceive.Lines.LoadFromStream(ms);//能够显示图像数据的十六进制
showmessage('111');
//ms.SaveToFile('D:\DELPHI7AZML\JIANJIAN2.JPG');
jpeg.loadfromstream(ms);
// jpeg.SaveToStream(ms);
// mmreceive.lines.LoadFromStream(ms);
//jpeg.SaveToFile('d:\DELPHI7AZML\JJJPEG.JPG');
//image1.Picture.Bitmap.Assign(jpeg); //出现JPEG ERROR #42 错误提示
jpeg.Free;
ms.Free;
这是我的代码,出现JPEG ERROR #53的错误,但是我我用memo组件检查过ms数据流中的数据发现没错的,为什么呢?
我不是要显示十六进制,而是要显示由一串经过JPEG编码后的十六进制表示的jpeg格式的图像?
十六进制的数据时这样的:
FFD8FFE00011。。801D450052E280128A314B8CD007FFD9
希望能得到解答,弄了一天了还没有结果,急,找资料也没有相关的介绍
http://www.cnblogs.com/del/archive/2011/04/26/2029860.html
jpg2hex行,但是hextojpg就不行,出现jpeg error #51
请问是为什么啊?弄了一天了procedure tform1.hex2jpg(str:string;out jpg:tjpegimage);
var
stream:tmemorystream;begin
if not assigned(jpg) then jpg:=tjpegimage.create;
stream:=tmemorystream.create;
stream.setsize(length(str)div 2);
hextobin(pchar(str),stream.memory,stream.size);
jpg.loadfromstream(stream);
stream.free;
end;procedure TForm1.Button1Click(Sender: TObject);
var
jpg:tjpegimage;
begin
jpg:=tjpegimage.Create;
hex2jpg(memo1.text,jpg);
canvas.draw(0,0,jpg);
jpg.free;
end;function tform1.jpg2hex(jpg:tjpegimage):string;
var
stream:tmemorystream;
begin
stream:=tmemorystream.Create;
jpg.SaveToStream(stream);
setlength(result,stream.size * 2);
bintohex(stream.Memory,pchar(result),stream.size);
stream.free;
end;procedure TForm1.Button2Click(Sender: TObject);
var
jpg:tjpegimage;
begin
jpg:=tjpegimage.Create;
jpg.loadfromfile('d:\2011.jpg');
memo1.text:=jpg2hex(jpg);
jpg.Free;end;end.
var
Form1: TForm1;
str:String;
implementation{$R *.dfm}
procedure tform1.hex2jpg(str:string;out jpg:tjpegimage);
var
stream:tmemorystream;begin
if not assigned(jpg) then jpg:=tjpegimage.create;
stream:=tmemorystream.create;
stream.setsize(length(str)div 2);
hextobin(pchar(str),stream.memory,stream.size);
jpg.loadfromstream(stream);
stream.free;
end;function tform1.jpg2hex(jpg:tjpegimage):string;
var
stream:tmemorystream;
begin
stream:=tmemorystream.Create;
jpg.SaveToStream(stream);
setlength(result,stream.size * 2);
bintohex(stream.Memory,pchar(result),stream.size);
stream.free;
end;procedure TForm1.Button2Click(Sender: TObject);
var
jpg:tjpegimage;
begin
jpg:=tjpegimage.Create;
hex2jpg(str,jpg);
jpg.SaveToFile('c:\test.jpg');
Image1.Canvas.Draw(0,0,jpg);
jpg.free;
end;procedure TForm1.Button1Click(Sender: TObject);
var
jpg:TJPEGImage;
begin
jpg:=TJPEGImage.Create;
jpg.LoadFromFile('C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Winter.jpg');
str:=jpg2hex(jpg);
end;我用的可以啊