//下段程序------取自网上一段生成中文二维码(带zint.dll)程序
- procedure Tinput_pc_reg_form.Button2Click(Sender: TObject); //生成二维码
- var mydll : PZSymbol;
- g: TBitmap; // 画布
- astr : AnsiString; // 用来接收的字符串
- begin
- mydll := ZBarcode_Create(); // 创建DLL
- if (mydll = nil) then
- Exit();
- g := TBitmap.Create; // 创建画布
- mydll.symbology := BARCODE_QRCODE; // 设置成二维码模式
- astr := AnsiString(Edit3.Text);// 获取需要设计的二维码名称
- ZBarcode_Encode_and_Buffer(mydll, PAnsiChar(astr),Length(astr),0); // 编码
- ZBarcodeToBitmap(mydll, g); // 提取
- Self.Canvas.StretchDraw(Rect(10,10,200,200), g); // 绘制
- Image1.Picture.Assign(g); //把二维码赋于image对象中
- g.Free;// 清空
- ZBarcode_Delete(mydll);
- end;
- procedure savedata; //保存到数据库中
- var tempStream:TMemoryStream; //内存流处理图片
- begin
- if Not (Image1.Picture.Graphic=nil) then
- begin
- tempStream:=TMemoryStream.Create;
- try
- Image1.Picture.Graphic.SaveToStream(tempStream);
- ADO_PC_reg.SQL.Text:='Insert into device_set (Id,PC_Name,Map) values ('+
- Edit1.Text+Edit2.Text+':TempMap'+#44;
- ADO_PC_reg.Parameters.ParamByName('TempMap').Assign(Image1.Picture.Graphic);
- ADO_PC_reg.ExecSQL
- finally
- tempStream.Free;
- end;
- end;
//红色标记为 保存到数据库中 【二维码图片】.
- procedure getdata; //取数据库图片
- var Stream:TMemoryStream; //用内存流载体取出数据库图片
- jpg:TJpegImage;
begin - Stream:=TMemoryStream.Create ;
- Jpg:=TjpegImage.Create ;
- try
- TBlobField(ADO_Max.FieldByName('map')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
- Stream.Position :=0;
- Jpg.LoadFromStream(Stream); // 加载图片 二维码生成图片取消报错 报JPEG error #53错误
- image1.Picture.Assign(Jpg);
- //jpg.SaveToFile('c:\yzz.jpg'); //image1.Picture.LoadFromFile('c:\yzz.jpg'); 以为保存为图片再取出来正常,结果还是报错。
- finally
- Stream.Free;
- Jpg.Free;
- end;
- end
- else
- image1.Picture.assign(nil);
- end;
- end;
问题:
在执行 getdata函数时 --取数据库图片 报错