delphi 中如何将图片数据保存到dat文件里的,然后读取出来,并在Image控件中显示。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 中如何将图片数据保存到dat文件里的,然后读取出来,并在Image控件中显示。相关的知识,希望对你有一定的参考价值。
参考技术A 先定义好图片的一个类型TImageType = record
ImageName : string;
width : integer;
height : integer;
ImageData : array[0..49,0..49] of byte;
end;
存图片:
procedure TForm1.SaveImage(path: string);
var
bit : TBitmap;
i,j : integer;
myImage : array[0..999] of TImageType;
FN : string;
dat : TFileStream;
begin
bit := TBitmap.Create;
bit.LoadFromFile(path);
myImage[0].ImageName := 'test';
myImage[0].width := bit.Width;
myImage[0].height := bit.Height;
for i := 0 to bit.Width - 1 do
begin
for j:= 0 to bit.Height - 1 do
begin
myImage[0].ImageData[i,j] := bit.Canvas.Pixels[i,j];
end;
end;
FN := 'C:/test.dat';
dat := TFileStream.Create(FN,fmOpenWrite);
dat.Write(myImage,sizeof(myImage));
dat.Free;
end;
读图片
procedure TForm1.LoadImagefromDat(path: string;image :Timage);
var
dat : TFileStream;
myImage : array [0..999] of TImageType;
i,j : integer;
begin
dat := TFileStream.Create(path,fmOpenRead);
dat.Read(myImage,sizeof(myImage));
dat.Free;
for i := 0 to myimage[0].width - 1 do
begin
for j:= 0 to myImage[0].height - 1 do
begin
image.Canvas.Pixels[i,j] := myImage[0].imagedata[i,j];
end;
end;
end;
未经测试,大致流程应该差不多了追问
谢谢你的答案,但程序在运行时提示出错,stack overflow
追答是栈溢出了,
myImage : array [0..999] of TImageType;
改成 myImage : array [0..999] of PImageType;
只申明指针试下
用时再分配内存 getmem(myimage[0],sizeof(Timagetype))给指针赋值
我写入的图片是很大的,有1024*768这么大,这样的写入方法会很慢,有没有更快一点的方法。
追答写入都是逐点写入了,没什么更快的了,或你可以调整小点分辨率,每2到3个点录一个,只是清淅度低点
参考技术B savetofile可以保存成文件,保存时文件名改成DAT就可以相反的
loadfromfile可以从文件中加载图像追问
savetofile可以保存成Dat文件,但读取就不可以了,而且我是想把大量的图片保存在一个DAT文件里,并读取出来,Image控件中显示
追答只保存到一个文件的话,只能用数据库,鉴于你只要一个文件的话,也不要太复杂的数据库,用ACCESS就可以了,把图片用二进制方式存入数据库就可以了
参考技术C 面版的添加删除,点添加删除windows组件,在对话框里其他的勾去掉,勾选windows media player点下一步安装.试试看windows组件不要删,否则会出很多问题.追问
我刚刚测试了一下,把array[0..999] of TImageType;改为array[0..255] of TImageType就没事了,但我写入的图片是很大的,有1024*768这么大,这样的写入方法会很慢,有没有更快一点的方法。
参考技术D //以下代码适合TBitmap类型//保存
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.SaveToFile(aFile);
end;
//加载
procedure TForm1.BitBtn1Click(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
aStream.Position := 0;
aStream.LoadFromFile(aFile);
Image2.Picture.Bitmap.LoadFromStream(aStream);
aStream.Free;end;追问
这样只可以存取一张图片,我需要存取大量的图片。只用一个DAT文件存取。
追答针对你的题目,已经在空间中发表一篇解决方法,请看:
http://hi.baidu.com/yueyun889/blog/item/7851b31e44773c0b403417f0.html
如何将word中的图片和文字导入自己的博客中
参考技术A如何将word中的图片和文字导入自己的博客中
方法一:
首先,选中要截的图,选择保存为BMP或JPG格式。然后,将光标放到自己博客中要插入图片的位置,然后找到刚才保存的图片,上传,确定,插入即可。
方法二:
1、打开含有图片的word文档。
2、选择“文件——另存为”,弹出“另存为”对话框,选择“保存类型”为“网页(*.htm;*.)”,文件名随便输入(假设文件名是abc),保存位置你自己决定(假设保存位置是“桌面”),点“保存”。
3、回到“桌面”,这时在“桌面”上会有abc.htm,还有一个名字为abc.files的文件夹。打开“abc.files文件夹”,就可以看到word文档中所包含的全部图片了。
4、登录博客用户管理后台,点“发布日志”,先将文字内容“复制”后“粘贴”到日志编辑区,将光标定位到需要插图图片的位置,点“上传图像”按钮,弹出“图片—网页对话框”,点右边的文件夹小图标,弹出“网页对话框”,点“浏览”,选择要上传的图片,点“上传”,提示上传成功后,点“确定”,返回到“图片—网页对话框”。
5、输入“显示文字”(就是当鼠标指向图片时显示的文字,也可以不输入),选择适当的“对齐”方式和“边框样式”,还可以在这里输入图片的“宽度”和“高度”,以及图片“上、下、左、右”边距,最后点“插入”,图片就插入到日志中了。
如何将word文章中的图片发到教师博客中
要将图片发到教师博客中,必须将word图片保存为图片文件,通常格式为jpg,bmp.png等,那么如何将图片保存为图片文件呢,方法有二:
1,复制word图片,打开QQ任意聊天窗口,粘贴,右键另存为,选择路径,保存即可
2,复制word图片,打开画图程序,粘贴,保存即可
如何在自己的博客中贴图?如何把图片放入相册?
如果您是要把自己电脑上的图片发布到个人博客中的话,您只需先将电脑上的图片上传到网络上(可以选择上传到博客个人空间,也可以上传到图片博客),上传之后请您记住该图片的网络地址。然后在撰写文章时点击插入图片的按钮,将您记住的图片地址添加到弹出的对话框中即可
在博客中添加图片是很简单方便的,请您尝试一下
如何将coreldraw中的图片和文字做成word文档形式
晕,你要WORD格式的用WORD编辑很简单的啊,复制,粘贴就行了
我如何将自己的博客中的电子杂志下载到U盘中
那就看长短了,给你说一种我常用的方法:找本电子书,全栓出,然后复制、粘贴==OK?
怎样将word中的图片插入到CSDN博客中
请在此输入您的回答
打开我们的word文档,然后点击左上角的WPS文字(用WPS为例)
选择另存为
选择自己喜欢的目录,然后选择我们的保存格式,选择格式
点击保存,就会出现两个文件
一个是files 一个是(如果文档里面没有图片的话,就不会产生files这个文件了)
之后就可以在我们的博客页面中选择文件了
然后出现下面的界面
选中之后,就可以上传 --- 插入 了,就到了我们的博客中了
如何将word中的图片导入indesign中不失真
只要导入时,不将图片放大或缩小,按原图片大小显示就可以不失真。
如何将带图片的word文档复制到博客中
直接复制,粘贴即可,一般博客编辑器里面都有个word粘贴工具,直接粘贴在你需要的地方。就OK了。希望能够帮到您!
如何在自己的博客中书写文章
直接写 点开博客,有个写新博客啊~~写就好了 写文章
如何将自己站外博客中的文章导入到QQ空间日志
你好,QQ空间日志页面右方有个日志导入,点击开始导入,会让你选择导入来源,下拉菜单仅提供人人网、开心网、网易博客的日志导入。输入登录名:例如网易博客用户yes125553@163.,然后从你的博客日志中勾选你要导入的日志就ok了。
以上是关于delphi 中如何将图片数据保存到dat文件里的,然后读取出来,并在Image控件中显示。的主要内容,如果未能解决你的问题,请参考以下文章