如何用TDBImage控件直接显示oracle数据库中的一个LONG RAW 类型的图像,图像的格式可能是bmp,jpg,jpeg...?我现在没经任何处理直接显示的时候报"bitmap image is not valid"错误.

解决方案 »

  1.   

    以下是我写的一个BMP转ICON格式的代码?第一次转没问题,可是在转第二次时就出现异常了,请各位帮忙看看...郁闷,怎么我会提问不了呢,所以借楼主地方用用,谢谢了procedure TForm1.changetoiconClick(Sender: TObject);    //bmp文件转icon文件;
    var
      myicon:Ticon;
      mybmp:Tbitmap;
      myimage:Timagelist;        //定义各子类对象;
    begin
      myicon:=Ticon.Create ;     //构造对象;
      mybmp:=Tbitmap.Create ;
      try
        mybmp.Assign(Image1.Picture );
        myimage:=ImageList1.CreateSize(mybmp.Width ,mybmp.Height); //获取尺寸
           try
              myimage.AddMasked(mybmp,mybmp.TransparentColor );
              myimage.GetIcon(0,myicon);
                if self.Saveicon .Execute then
                  begin
                   myicon.SaveToFile(Saveicon.FileName );//save ICON file;
                   changetoicon.Visible :=false;       //这个是按钮,目的是转换后,按钮"转换"定为不可见                                                 
                   end;
           finally                                  //异常处理;
              myimage.Free;
           end;
      finally
        myicon.Free ;
        mybmp.Free;
      end;
    end;
      

  2.   

    SORRY,可以提问了,占了楼主一点点地方,不好意思
      

  3.   

    出现这种情况的原因,我上网查了一下,归纳如下
    -------------------------------------------------
    1)通常是需要装载位图(bmp)文件时,你没有装载位图而是装载的其他图片文件,比如gif文件等。这种现象在使用image等控件时,就会出现
    2)你可能是用了流来读取或设置,  也就是说你的流数据没有读正确哐写正确
    3)你的bitmap头信息与dib数据不符合,被人为是无效的bitmap;分析你的代码,是不是dib大小变换了,忘了改bitmap头信息
      

  4.   

    引用高人的解决方法为[ZT]
    ----------------------------------
    通过代码分析,查看Graphics单元
    看看哪些地方调用了InvalidBitmapprocedure InvalidBitmap; 
    begin
      InvalidGraphic(@SInvalidBitmap);
    end;procedure InvalidGraphic(Str: PResStringRec);
    begin
      raise EInvalidGraphic.CreateRes(Str);
    end;SInvalidBitmap = 'Bitmap image is not valid';