在使用timage控件时,如何知道它装入的图片类型?比如bmp,jpg,png等....

解决方案 »

  1.   

    判断各种类型文件标识位,bmp是以$4D42开头的,jpg是$FFD8开头
      

  2.   

    网摘:如果只是判断BMP、JPG、GIF图片,倒是有一个简单的方法,用数据流判断,因为BMP、GIF、JPG格式的文件流有标识符的,分别如下: 
    名称 宽度 标识符BMP 2位 BMJPG 10位 chr($FF)+chr($D8)+chr($FF)+chr($E0)+chr($00)+chr($10)+'JFIF'GIF 3位 GIF通过这种方式可以判断。当然通过DELPHI的系统的类也可以判断,用ClassName函数,但是不能判断GIF类型。例如:if Image1.Picture.Graphic<>nil thenEdit1.Text:=Image1.Picture.Graphic.ClassName;
      

  3.   

    是 GetNamePath 返回的类型是 TBitmap TJPEGIMAGE TPNGOBJECT 等等.....
    不过我还是想知道它载入的完整文件名
      

  4.   

    TImage在设计期装入图像后就保存在DFM文件中,不可能得到载入时的完整文件名,只能通过Image1.Picture.Graphic来判断其对象类型,比如if Image1.Picture.Graphic is TJPEGImage then
      

  5.   


    只要能加载GIF就应该能判断出来
    强烈推荐ClassName这个方法
      

  6.   

    Image1.Picture.Graphic.ClassName
    我没搞错吧?好像只有 GetNamePath 这个方法吧?
    要获取文件名,似乎只有改写 tGraphic 类,在装载文件时把文件名记下来了....另一个问题,用TGpBitmap时,如果传一个24位的 tbitmap,无法直接通过它来调节透明度,不知是什么原因,FromHbitmap(bmp.Handle,0),create(bmp.Handle,0)这两种方法都无效
    就算通过数据拷贝,出来的图像已经是损坏的。有哪位能帮忙试下???
      

  7.   

    我搞错了,。。Image1.Picture.Graphic.ClassName 有这个,糊涂了
      

  8.   

    Image1.Picture.Graphic.ClassName里面可以看到加载的文件类型。