C++builder 图像字符流的存储和加载
__fastcall TForm6::TForm6(TComponent* Owner)
: TForm(Owner)
{
#if 1 //for debug
AllocConsole();
AttachConsole( GetCurrentProcessId() ) ;
freopen( "CON", "w", stdout ) ;
#endif
Image1->Picture->LoadFromFile("HeadImage-UI/Photo-001.bmp");
strcpy(text,"图片信息.a");
}
//---------------------------------------------------------------------------
void __fastcall TForm6::LoadImageClick(TObject *Sender)
{ String strFileName = "123.bat";
//打开或创建目标文件
int nFileHandle;
if(FileExists(strFileName))
nFileHandle = FileOpen(strFileName,fmOpenWrite);
else
nFileHandle = FileCreate(strFileName); //定位到文件头
FileSeek(nFileHandle,0x0,); //把Image中的位图存入流中
TMemoryStream *ms = new TMemoryStream;
Image1->Picture->Bitmap->SaveToStream(ms); //先把图片流的大小写入文件中
DWORD dw = ms->Size;
FileWrite(nFileHandle,&dw,sizeof(dw));
//再把图片流吸入文件中
FileWrite(nFileHandle,ms->Memory,ms->Size);
//接着写入Edit文本的长度
dw = strlen(text);
cout<<dw<<endl;
FileWrite(nFileHandle,&dw,sizeof(dw));
//再把Edit的文本写入文件
FileWrite(nFileHandle,text,dw); delete ms;
FileClose(nFileHandle); Image1->Picture->Assign(NULL);
Edit1->Clear(); }
//---------------------------------------------------------------------------
void __fastcall TForm6::ShowImageClick(TObject *Sender)
{
String strFileName = "123.bat";
//打开图片流文件
int nFileHandle;
if(FileExists(strFileName))
nFileHandle = FileOpen(strFileName,fmOpenRead);
else
{
ShowMessage("File not find");
return;
}
//定位到文件头
FileSeek(nFileHandle,0x0,);
//先读取图像流的大小
DWORD dw;
FileRead(nFileHandle,&dw,sizeof(dw));
//根据图像流的大小,从文件中读取图像流
TMemoryStream *ms = new TMemoryStream;
byte *p = new byte[dw];
FileRead(nFileHandle,p,dw);
ms->Write(p,dw);
delete p; //把图像流中的位图显示到Image上面
ms->Position = ;
Image1->Picture->Bitmap->LoadFromStream(ms);
//接着读取文本长度
FileRead(nFileHandle,&dw,sizeof(dw)); //然后把指定长度的内容写到Edit中
char *str = new char[dw*];
FileRead(nFileHandle,str,dw);
str[dw]=0x0;
Edit1->Text = str;
cout<< dw <<endl;
delete str;
delete ms;
}
//---------------------------------------------------------------------------
C++builder 图像字符流的存储和加载的更多相关文章
- Python 黑帽编程 4.2 Sniffer之数据本地存储和加载
在上一节,我们完成了编写一个简易的Sniffer的第一步--数据捕获. 很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分析. 本节我们在上一节的基础上来讲解保存 ...
- [Day23]IO(字节流、字符流)
1.字节流 1.1 字节输出流OutputStream-抽象类,表示输出字节流的所有类的超类 (1)void close() 关闭此输出流并释放与此流相关的所有系统资源 (2)void flush() ...
- IO(字节流、字符流)
第1章 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流OutputStream ...
- java基础(23):字节流、字符流
1. 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流OutputStream Out ...
- java ->IO流_字符流
字符流 经过前面的学习,我们基本掌握的文件的读写操作,在操作过程中字节流可以操作所有数据,可是当我们操作的文件中有中文字符,并且需要对中文字符做出处理时怎么办呢? 字节流读取字符的问题 通过以下程序读 ...
- java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...
- Java字节流和字符流区别
1.字节流:直接操作文件本身. 2.字符流:通过缓冲区来操作文件. 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节 ...
- java IO流 之 字符流
字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...
- [Java IO]03_字符流
Java程序中,一个字符等于两个字节. Reader 和 Writer 两个就是专门用于操作字符流的类. Writer Writer是一个字符流的抽象类. 它的定义如下: public abstra ...
随机推荐
- buffer overflow
Computer Systems A Programmer's Perspective Second Edition We have seen that C does not perform any ...
- 【转】java正则表达式
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...
- Android生命周期详细说明
提供两个关于Activity的生命周期模型图示帮助理解: 图1 图2 从图2所示的Activity生命周期不难看出, ...
- android游戏动画特效的一些处理
游戏中避免不了需要一些动画特效的处理,有些是不方便用美术或者美工来处理的,那么就由我们程序猿来搞了.直接进入正题. 首先是Animation,Animation针对view,可以控制view的位移.缩 ...
- .SQL Server中 image类型数据的比较
原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...
- Wall---hdu1348(求凸包周长 模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 求凸包周长+2*PI*L: #include <stdio.h> #include ...
- 关注web前端
web前端新手上路 http://blog.sina.com.cn/s/articlelist_2720105253_0_1.html
- MFC的简单加法器(二)
创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件:第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等.鸡啄米在本 ...
- js获取框架(IFrame)的内容
<frameset id="fr" rows="50%,50%"> <frame name="up" id=&q ...
- 人脸识别的ppt
http://wenku.baidu.com/link?url=GWiNRy_9mzqBZ9_2DDZbHRZbBbaBofhs1Y0pBS7aiE5oab8TY78r_z6aAlqo_L9AZzD4 ...