sql2000数据库,image类型字段'pic'delphi 6.0 中用imgPic.Picture.Graphic:=JPEG;(JPEG: TJPEGImage;)显示JPG图片当pic字段存储的是大于32K的jpg文件(流)时,imgPic只显示32K以下的图象,32K以后是就变成杂色,不能显示。在PB下显示相同字段的流文件时,可以正常显示图片。请问我应该怎么做? 我已经在BDE里把mssql->boblesize设成了200,可是没有用,是不是还要改别的地方????请大家帮帮忙。

解决方案 »

  1.   

    boblesize设成 4096   试试
      

  2.   

    如果你是动态连接数据库的话中,在你的Tdatabase的params中要加入blob size=10240{10M}database1.params.values['blob size'] := 10240;//试试
      

  3.   

    依然不行。是不是我读出的方法不对?代码:
    procedure TfrmPic.FormCreate(Sender: TObject);
    var
      JPEG: TJPEGImage;
    begin
        MainDm.ClientTYSJSave.Close;
        MainDm.ClientTYSJSave.Open;
        MainDm.ClientTYSJSave.Locate('Id',glbID,[loPartialKey]);    if not MainDm.ClientTYSJSave.FieldByName('pic').IsNull then
        begin
          btnView.Enabled:=True;
          try
            JPEG:=TJPEGImage.Create;
            JPEG.LoadFromStream(TClientBlobstream.Create(Maindm.ClientTYSJSave.FieldByName('pic') as TBlobField, bmRead));
            imgPic.Picture.Graphic:=JPEG;
          finally
            JPEG.Destroy;
          end;
        end;
        MainDm.ClientTYSJSave.Close;
    end;
      

  4.   

    11.1k:
    0xFFD8FFE000104A46494600010100000100010000FFDB0043000B08080A08070B0A090A0D0C0B0D111C12110F0F1122191A141C29242B2A282427272D3240372D303D302727384C393D43454849482B364F554E465440474845FFDB0043010C0D0D110F1121121221452E272E45454545454545454545454545454545454545108k:
    0xFFD8FFE000104A46494600010200006400640000FFEC00114475636B79000100040000003C0000FFEE000E41646F62650064C000000001FFDB0084000604040405040605050609060506090B080606080B0C0A0A0B0A0A0C100C0C0C0C0C0C100C0E0F100F0E0C1313141413131C1B1B1B1C1F1F1F1F1F1F1F1F1F1F010707
      

  5.   

    用流的方式读图片数据大小跟数据库中的定义有关系.你用ASSIGN就不会错了!以前也有类似的文章我写过一个涵数不但可以存入和读出所有图片格式的数据!你查查就知了!我出差在外不便贴出来!
      

  6.   

    coolfilm:我保存时是用ASSIGN,但用它怎么读出来就不清楚了。如果你不方便,大概地给我说一下好吗?谢。
      

  7.   

    读出也改成:
    JPEG.ASSIGN(Maindm.ClientTYSJSave.FieldByName(glbPic))但还是不行。