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 ...
随机推荐
- java获取类路径
String file = MessageTask3.class.getResource("").getFile(); File: public static final Stri ...
- Python中布尔类型
我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:与运算:只有两个布尔值都为 True 时,计算结果才为 True.True and T ...
- CDH(Cloudera)与hadoop(apache)对比
本文出自:CDH(Cloudera)与hadoop(apache)对比http://www.aboutyun.com/thread-9225-1-1.html(出处: about云开发) 问题导读 ...
- Unix网络编程(迭代服务器)
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/soc ...
- Eclipse插件项目 引用其他类库的方法(jar)
这两天搞了个Eclipse插件项目,用来监测ios.android设备和电脑的连接,安装apk/ipa到对应设备等等功能. 遇到了build path下的library引入编译正常,运行时报Class ...
- 网页中的超链接<a>标签
格式: <a href="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a> 注意:为文本加入<a>标签 ...
- oracle 表查询二
1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...
- css3常用动画效果集合01
/*由右到左进场*/ .FromRightToLeft{ -webkit-animation:FromRightToLeft 500s .2s ease both; } @-webkit-keyfra ...
- Caused by: java.lang.OutOfMemoryError: PermGen space.
现在eclipse需要加载4个项目同时运行了,所以当服务启动的时候,出现Caused by: java.lang.OutOfMemoryError: PermGen space.空间不足错误,我说一下 ...
- 一般处理程序使用Session的方法
1 引用这个命名空间 using System.Web.SessionState; 2 实现这两个接口中的任何一个 IReadOnlySessionState //此接口只能使用session,无 ...