//下段程序------取自网上一段生成中文二维码(带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函数时    --取数据库图片 报错