delphi使用流实现jpg文件的处理(转)

delphi使用流实现jpg文件的处理(转)

ID:34722618

大小:66.68 KB

页数:6页

时间:2019-03-10

delphi使用流实现jpg文件的处理(转)_第1页
delphi使用流实现jpg文件的处理(转)_第2页
delphi使用流实现jpg文件的处理(转)_第3页
delphi使用流实现jpg文件的处理(转)_第4页
delphi使用流实现jpg文件的处理(转)_第5页
资源描述:

《delphi使用流实现jpg文件的处理(转)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一、原理介绍--流式数据的类型及其应用在Dephi中提供了TStream来支持对流式数据的操作。TStream是万流之源。但由于它是一个抽象类,故不能被直接使用;而要使用其相应的子类,如:TFileStream、TStringStream、TMemoryStream、TBlobStream、TWinSocketStream和TOleStream。TStream提供了统一、简洁的方法来进行数据的读写。1.)SaveToStream(Stream:TStream);作用:将类中的数据写到Stream的当前位置中2.)LoadFromStrea

2、m(Stream:TStream);作用:从当前位置读入Stream里的数据实际使用时我们基本上只要使用上面两个函数就可以了。二、所遇到的问题及相应的解决方法为了节省图像的存储空间和使用更加方便,决定采用JPEG这种图像格式。(一)所遇到的问题第一、在Delphi5中进行画图所用到的组件是TImage,所生成的图像的格式为BMP格式,而为了节省图像的存储空间,图像在数据库里存储的格式须为JPEG格式,这样就产生了图像格式转化的需求;而TImage本身并不直接提供这两种图像格式之间的转化。第二、怎样将存储在MicrosoftAccess数据

3、库中的图像取出并且显示出来:在Delphi5中,能提供这种功能的组件是TDBImage,但该组件却存在着一个很大的缺陷:它所能显示的图像类型只能是一些图标文件,元文件和BMP文件,而不能支持JPEG格式的图像在该组件中的显示;但根据实际需要,在MicrosoftAccess数据库中所存储的图像数据却是以JPEG格式保存的。(二)相应的解决方法为了解决上述两个问题,可以采用目前数据库中一种名为大二分对象(BLOB--BinaryLargeObject),它是用来处理某些特殊格式的数据的。BLOB在数据库的表中实际上是以二进制数据的形式存放的

4、。为了处理BLOB字段,可以借鉴一些可视的桌面数据库的方法。在这里,我们选择了通过内存流的方式来完成;使用内存流,可减少磁盘操作,大大提高运行效率。具体的过程和相关的程序代码如下:1、如何实现在MicrosoftAccess数据库中的图像存储:这里是利用TStream的子类TMemoryStream向MicrosoftAccess数据库中存储图像的。下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序:procedureTForm1.Button1Click(Sender:TObject);varMyJPEG:TJPEGImage;

5、MS:TMemoryStream;beginMyJPEG:=TJPEGImage.Create;trywithMyJPEGdobeginAssign(Image.Picture.Graphic);MS:=TMemoryStream.create;SaveToStream(MS);MS.Position:=0;Table1.Edit;TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);Table1.Post;messagebox(getactivewindow(),'图像保存

6、完毕!','保存',mb_ok);end;finallyMyJPEG.Free;end;end;在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式的中间桥梁的作用。2、如何将图像从MicrosoftAccess数据库中取出并显示出来:下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序:procedureTForm1.Button1Click(Sender:TObject);vartempstream:TStringStream;tempjpeg:TJPEGImage;beg

7、intrytempstream:=TStringStream.Create('');TBlobField(Query1.FieldByName('Image')).SaveToStream(tempstream);tempstream.Position:=0;tempjpeg:=TJPEGImage.Create;tempjpeg.LoadFromStream(tempstream);DBImage1.Picture.Bitmap.Assign(tempjpeg);finallytempstream.Free;tempjpeg.Free;

8、end;end;这段代码的主要作用是:首先将查询结果中的JPEG图像格式数据保存到TStringStream中去,然后设置数据指针在TStringStream中的位置为0;接着从TString

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。