导入图片时,出现jpeg error #53 这是什么意思啊 谢谢了

解决方案 »

  1.   

    uses 上 ImageEn 或 TJPGImage 单元试试看
      

  2.   

    http://blog.csdn.net/ghyghost/archive/2003/07/21/15773.aspx
      

  3.   

    你导入的是jpg格式的图片吗?应该是导入图片的格式不对~~
      

  4.   

    格式是不对是 error 42, error 53 应该是从流中还原有误,要不就是帧{Copy picture (Jpeg) to the buffer and return number of copied bytes} 
    function CopyPictureToStream(PictureToCopy: TImage; 
    MyBuffer: PAnsiChar): Integer; 
    var 
    FJPEG: TJPEGImage; 
    FMemoryStream: TMemoryStream; 
    CurrentImageByte: Byte; 
    i: Integer; 
    begin 
    Result := 0; 
    {Get current frame from TImage} 
    FJPEG := TJPEGImage.Create; 
    FMemoryStream := TMemoryStream.Create; 
    try 
    if Assigned(PictureToCopy) then begin 
    FMemoryStream.Seek(0, soFromBeginning); 
    FJPEG.Assign(PictureToCopy.Picture.Graphic); 
    FJPEG.SaveToStream(FMemoryStream); 
    FMemoryStream.Seek(0, soFromBeginning); 
    {Save the frame size at the begining of the stream} 
    MyBuffer^ := Char(FMemoryStream.Size shr 24); 
    Inc(Result); 
    Inc(MyBuffer); 
    MyBuffer^ := Char(FMemoryStream.Size shr 16); 
    Inc(Result); 
    Inc(MyBuffer); 
    MyBuffer^ := Char(FMemoryStream.Size shr 8); 
    Inc(Result); 
    Inc(MyBuffer); 
    MyBuffer^ := Char(FMemoryStream.Size and 255); 
    Inc(Result); 
    Inc(MyBuffer); 
    {Copy frame content} 
    for i := 0 to FMemoryStream.Size - 1 do begin 
    FMemoryStream.Read(CurrentImageByte, 1); 
    MyBuffer^ := Char(CurrentImageByte); 
    Inc(Result); 
    Inc(MyBuffer); 
    end;//for i 
    end; 
    finally 
    FJPEG.Free; 
    FMemoryStream.Free; 
    end; 
    end; 
    {Copy picture (Jpeg) from the buffer and return number of copied bytes} 
    function CopyPictureFromStream(PictureToPaste: TImage; 
    MyBuffer: PAnsiChar): Integer; 
    var 
    PictureSize: Integer; 
    FJPEG: TJPEGImage; 
    FMemoryStream: TMemoryStream; 
    begin 
    Result := 0; 
    {Frame size} 
    PictureSize := Byte(MyBuffer^) shl 24; 
    Inc(Result); 
    Inc(MyBuffer); 
    PictureSize := PictureSize + Byte(MyBuffer^) shl 16; 
    Inc(Result); 
    Inc(MyBuffer); 
    PictureSize := PictureSize + Byte(MyBuffer^) shl 8; 
    Inc(Result); 
    Inc(MyBuffer); 
    PictureSize := PictureSize + Byte(MyBuffer^); 
    Inc(Result); 
    Inc(MyBuffer); 
    Inc(Result, PictureSize); 
    {Get the frame from the buffer} 
    FJPEG := TJPEGImage.Create; 
    FMemoryStream := TMemoryStream.Create; 
    try 
    {Copy buffer to stream} 
    FMemoryStream.Seek(0, soFromBeginning); 
    FMemoryStream.WriteBuffer(MyBuffer^, PictureSize); 
    {Copy stream content to jpeg image} 
    FMemoryStream.Seek(0, soFromBeginning); 
    FJPEG.LoadFromStream(FMemoryStream); 
    if Assigned(PictureToPaste) then 
    {Assign jpeg image content to TImage object} 
    PictureToPaste.Picture.Assign(FJPEG); 
    finally 
    FJPEG.Free; 
    FMemoryStream.Free 
    end; 
    end;