var MS_JpegStream:TMemoryStream; M_BitMap:TBitMap; M_Jpeg:TJpegImage; begin try MS_JpegStream:=TMemoryStream.Create; M_BitMap:=TBitMap.Create; M_Jpeg:=TJpegImage.Create; if extractfileext(filename)='.bmp' then begin M_BitMap.LoadFromFile(filename); M_Jpeg.Compress; M_Jpeg.Assign(M_BitMap); end else if extractfileext(filename)='.jpg' then begin M_Jpeg.LoadFromFile(filename); end; M_Jpeg.SaveToStream(MS_JpegStream); image1.Picture.Graphic:=nil; MS_JpegStream.Position:=0;//!!! image1.Picture.Graphic.LoadFromStream(MS_JpegStream); finally MS_JpegStream.Free; M_BitMap.Free; M_Jpeg.Free; end;
这样可以了,不好意思,刚才写少了一句: procedure TForm1.Button3Click(Sender: TObject); var MS_JpegStream:TMemoryStream; M_BitMap:TBitMap; M_Jpeg:TJpegImage; begin openpicturedialog1.Execute; filename:=openpicturedialog1.FileName; try MS_JpegStream:=TMemoryStream.Create; M_BitMap:=TBitMap.Create; M_Jpeg:=TJpegImage.Create; if extractfileext(filename)='.bmp' then begin M_BitMap.LoadFromFile(filename); M_Jpeg.Compress; M_Jpeg.Assign(M_BitMap); end else if extractfileext(filename)='.jpg' then begin M_Jpeg.LoadFromFile(filename); end; M_Jpeg.SaveToStream(MS_JpegStream); image1.Picture.Graphic:=nil; image1.Picture.Graphic:=TJpegImage.Create;//写少了这里,不好意思 MS_JpegStream.Position:=0;//!!! image1.Picture.Graphic.LoadFromStream(MS_JpegStream); finally MS_JpegStream.Free; M_BitMap.Free; M_Jpeg.Free; end; end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,JPEG;//注意这里
image1.picture.loadfromstream(ms);//这不要Bitmap了
image1.picture.loadfromstream(ms)編譯不過
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
begin
try
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if extractfileext(filename)='.bmp' then
begin
M_BitMap.LoadFromFile(filename);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if extractfileext(filename)='.jpg' then
begin
M_Jpeg.LoadFromFile(filename);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
image1.Picture.Graphic:=nil;
MS_JpegStream.Position:=0;//!!!
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
finally
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
end;
http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
到了這句就報錯了
对filename处理一下就可以。
比如:
filename:=openpicturedialog1.FileName;
filename是一个图象文件的文件名。
这样可以了,不好意思,刚才写少了一句:
procedure TForm1.Button3Click(Sender: TObject);
var
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
begin
openpicturedialog1.Execute;
filename:=openpicturedialog1.FileName;
try
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if extractfileext(filename)='.bmp' then
begin
M_BitMap.LoadFromFile(filename);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if extractfileext(filename)='.jpg' then
begin
M_Jpeg.LoadFromFile(filename);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
image1.Picture.Graphic:=nil;
image1.Picture.Graphic:=TJpegImage.Create;//写少了这里,不好意思
MS_JpegStream.Position:=0;//!!!
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
finally
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
end;
end;