你在存储的时候加上一个字段,用来存储图片的类型,如'.jpg',读入的的时候在判断不就型了

解决方案 »

  1.   

    这与文件格式有关,建议你去查一下关于这些文件的格式!
    看看www.csdn.net上文件格式大全的介绍
    http://www.csdn.net/dev/Format/
      

  2.   

    读取流的前两个字节,如果是'BM'就是bmp啦
      

  3.   

    先定义一个Image1: TImage然后Image1.picture.graphic is TBitmap or TjpegImage
    不知道行不行:)
      

  4.   

    var 
      pic:TPicture
    begin
      pic.LoadFromStream(theStream);
      ...
    end;
    在pic.Graphic中会创建正确的类型的TGraphic,条件是在用的程序中,该类型应已经注册.如在任一单元中uses Jpeg就可以识别JPEG格式了.
      

  5.   

    我找到TPictureEx的代码了,把它加到你的Graphic单元去:
    interface节:
      TPictureEx = Class(TPicture)
        public
          procedure SaveToStream(Stream: TStream);
          procedure LoadFromStream(Stream: TStream);
      end;
    implementation节:
    { TPictureEx }
    resourcestring
      SUnknownClassName = 'Unknown Class Name (%s)';procedure TPictureEx.LoadFromStream(Stream: TStream);
    var
      GraphClassName: String;
      ClassNameLen: Integer;
      GraphClass: TGraphicClass;
      NewGraphic: TGraphic;
    begin
      Stream.Read(ClassNameLen,Sizeof(ClassNameLen));
      GraphClassName := StringOfChar(#0,ClassNameLen);
      Stream.Read(GraphClassName[1],ClassNameLen);
      GraphClass := FileFormats.FindClassName(GraphClassName);
      if GraphClass = nil then
        raise EInvalidGraphic.CreateFmt(SUnknownClassName, [GraphClassName]);  NewGraphic := GraphClass.Create;
      try
        NewGraphic.OnProgress := Progress;
        NewGraphic.LoadFromStream(Stream);
      except
        NewGraphic.Free;
        raise;
      end;
      Graphic:=NewGraphic;
    end;procedure TPictureEx.SaveToStream(Stream: TStream);
    var
      GraphClassName: String;
      ClassNameLen: Integer;
    begin
      if Graphic<> nil then
      begin
        GraphClassName := Graphic.ClassName;
        ClassNameLen := Length(GraphClassName);
        Stream.Write(ClassNameLen,Sizeof(ClassNameLen));
        Stream.Write(GraphClassName[1],ClassNameLen);
        Graphic.SaveToStream(Stream);
      end;
    end;然后把这个单元加入到你的工程中,打开调试选项编译一次,把生成的Graphic.dcu拷贝到...\Delphi5\lib下;再关闭调试选项编译,把生成的Graphic.dcu拷贝到...\Delphi5\lib\debug下.