__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 图像字符流的存储和加载的更多相关文章

  1. Python 黑帽编程 4.2 Sniffer之数据本地存储和加载

    在上一节,我们完成了编写一个简易的Sniffer的第一步--数据捕获. 很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分析. 本节我们在上一节的基础上来讲解保存 ...

  2. [Day23]IO(字节流、字符流)

    1.字节流 1.1 字节输出流OutputStream-抽象类,表示输出字节流的所有类的超类 (1)void close() 关闭此输出流并释放与此流相关的所有系统资源 (2)void flush() ...

  3. IO(字节流、字符流)

      第1章 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流OutputStream ...

  4. java基础(23):字节流、字符流

    1. 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流OutputStream Out ...

  5. java ->IO流_字符流

    字符流 经过前面的学习,我们基本掌握的文件的读写操作,在操作过程中字节流可以操作所有数据,可是当我们操作的文件中有中文字符,并且需要对中文字符做出处理时怎么办呢? 字节流读取字符的问题 通过以下程序读 ...

  6. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  7. Java字节流和字符流区别

    1.字节流:直接操作文件本身. 2.字符流:通过缓冲区来操作文件. 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节 ...

  8. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  9. [Java IO]03_字符流

    Java程序中,一个字符等于两个字节. Reader 和 Writer 两个就是专门用于操作字符流的类. Writer Writer是一个字符流的抽象类.  它的定义如下: public abstra ...

随机推荐

  1. Manipulating Data Structures

    Computer Science An Overview _J. Glenn Brookshear _11th Edition We have seen that the way data struc ...

  2. Bootstrap 模态框插件

    一.基本使用 使用模态框的弹窗组件需要三层 div 容器元素,分别为 modal(模态声明层). dialog(窗口声明层).content(内容层).在内容层里面,还有三层,分别为 header(头 ...

  3. nodejs net模块实现socket

    var net = require('net'); var client = net.connect({port: 8080}, function() { console.log('连接到服务器!') ...

  4. Http请求工具

    package cn.com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  5. Flume协作框架

    1.概述 ->flume的三大功能 collecting, aggregating, and moving 收集 聚合 移动 2.框图 3.架构特点 ->on streaming data ...

  6. 学习之js绑定事件

    由于ie中绑定事件的bug,所以产生了用原生的实践操作来模拟事件绑定的方法,跟着李炎恢学的一招. function addEvent(obj, type, fn){ if(obj.addEventLi ...

  7. php---文件上传分析

    文件上传: 先抄一段:预定义变量$_FILES数组有5个内容:       $_FILES['userfile']['name']——客户端机器文件的原名称       $_FILES['userfi ...

  8. [LeetCode] Combinations (bfs bad、dfs 递归 accept)

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  9. Linux 性能工具 - sar学习

    简介 sar是一款在linux下的性能工具,可以观察到CPU,内存,IO,运行队列,每秒上下文切换等信息. 软件工具安装 #Ubuntu sudo apt-get install sysstat # ...

  10. windows2008一键安装环境的配置说明

    windows 2008 一键安装包下载地址为 http://gongdan.oss-cn-hangzhou.aliyuncs.com/market/cmISV/34320/product/cmgj0 ...