用TMEMORYSTREAM來讀圖片顯示不出來,你有解決的方法嗎?

Help_ycf 2002-09-12 02:22:57
如果是BMP文件很成功
MS:TMEMORYSTREAM;
。。。。
//從數據庫中讀出相片存爲流
tblobfield(adoquery1.FieldByName('photo')).SaveToStream(ms);
image1.picture.bitbmp.loadfromstream(ms)
//顯示得很好

但如果流是JPEG的話,則顯示不出來,怎麽處理?
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdcnow 2002-09-12
  • 打赏
  • 举报
回复
现在在工作中,不能上qq,呵呵。
可以给我短信。
Help_ycf 2002-09-12
  • 打赏
  • 举报
回复
謝謝你了,給分了,能不能解決一下另一個問題?有QQ嗎?
zdcnow 2002-09-12
  • 打赏
  • 举报
回复

这样可以了,不好意思,刚才写少了一句:
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;
zdcnow 2002-09-12
  • 打赏
  • 举报
回复
Help_ycf(不懂):
对filename处理一下就可以。
比如:
filename:=openpicturedialog1.FileName;
filename是一个图象文件的文件名。
Help_ycf 2002-09-12
  • 打赏
  • 举报
回复
zdcnow(磁效应)
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
到了這句就報錯了
zdcnow 2002-09-12
  • 打赏
  • 举报
回复
详细可以看看这里的代码:
http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189
zdcnow 2002-09-12
  • 打赏
  • 举报
回复
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;
Help_ycf 2002-09-12
  • 打赏
  • 举报
回复
jpeg已經加了,但
image1.picture.loadfromstream(ms)編譯不過
ppbaobei123 2002-09-12
  • 打赏
  • 举报
回复
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,JPEG;//注意这里


image1.picture.loadfromstream(ms);//这不要Bitmap了
ppbaobei123 2002-09-12
  • 打赏
  • 举报
回复
在USES中加入JPEG,就可以在IMANGE中显示图片了。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧