jpegscreen := Tjpegimage.Create;
    jpegscreen.Assign(image1.Picture.Bitmap);//截屏得到的图片
    jpegscreen.CompressionQuality := 40;
    jpegStream.Create;
    jpegscreen.SaveToStream(jpegStream);
    imgSize := jpegStream.Size;
    jpegStream.SaveToFile('F:\My Document\test.jpg')
这个时候会出错,提示内存某地址有错。

解决方案 »

  1.   

    jpegscreen := Tjpegimage.Create;
        jpegscreen.Assign(image1.Picture.Bitmap);//截屏得到的图片
        jpegscreen.CompressionQuality := 40;
        //jpegStream.Create;
        //jpegscreen.SaveToStream(jpegStream);
        //imgSize := jpegStream.Size;
        jpegscreen.SaveToFile('F:\My Document\test.jpg')这个时候就没错,本来想测试完这段代码之后就存进数据库的,所以,要用流的方式。但是,一用流就出错了。请各位帮忙,我是菜鸟,问题白痴的话请见谅
      

  2.   

    imgSize := jpegStream.Size;
        
        jpegStream.Position := 0;//加這句
      
        jpegStream.SaveToFile('F:\My Document\test.jpg')
      

  3.   

    还是不行,提示出错:Access violationi at address 00403634 in module ***.exe Read of address 0437035C
      

  4.   

    jpegStream.Create; 改为
    jpegStream := TjpegStream.Create;
      

  5.   

    我一般用内存流存储
    var Ms:TmemoryStream;
       jpg : Tjpegimage;
    begin
      jpg := Tjpegimage.Create;
      ms:=TmemoryStream.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms) ;
      Ms.Position :=0;
      ADOquery1.append;
      TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
      ADOquery1.Post;
      Ms.Free ;
      jpg.free;
    end;