社区
C++ Builder
帖子详情
位图保存为二进制文件?
hillspring
2004-12-20 05:10:31
采集大量得数据,放到List中,并用这些数据画出谱图。
现在:1保存List中得原始数据,保存谱图为二进制文件,哪个更好些?
2*.bmp位图文件如何保存成二进制文件(.dat之类)?
...全文
305
8
打赏
收藏
位图保存为二进制文件?
采集大量得数据,放到List中,并用这些数据画出谱图。 现在:1保存List中得原始数据,保存谱图为二进制文件,哪个更好些? 2*.bmp位图文件如何保存成二进制文件(.dat之类)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hillspring
2005-03-15
打赏
举报
回复
是矢量图,将原始数据保存好,每次打开数据时,采用一些算法将其显示成图像。
保存成二进制文件TFileStream
qiushenwei88
2004-12-27
打赏
举报
回复
学习
「已注销」
2004-12-25
打赏
举报
回复
本来还明白,现在糊涂了?
icwin
2004-12-25
打赏
举报
回复
帮你顶,自己学
hillspring
2004-12-21
打赏
举报
回复
Amour81(失心疯):这是数据库图像保存,不用数据库,直接保存呢?
To:yjy1001(蓝鲸--优秀得郁闷的鱼),位图本来是以二进制保存,当然了解这一点。但是我说得意思是自己定义保存为自己格式(自己定义后缀名)。
是不是要用到Stream类?
yjy1001
2004-12-20
打赏
举报
回复
2*.bmp位图文件如何保存成二进制文件(.dat之类)?
所有文件都可以看成 2进制文件……
你的基本概念要加强点
Amour81
2004-12-20
打赏
举报
回复
1,应该是2进制好点
2,
BCB数据库图像保存技术
加上头文件#include<jpeg.hpp>
1
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
OpenDialog2->FileName="";
if (OpenDialog2->Execute())
{
String f=OpenDialog2->FileName;
if (FileExists(f))
{
String ext=ExtractFileExt(f).LowerCase();
if (ext==".bmp" || ext==".jpg"|| ext==".jpeg")
{
String jpg=ChangeFileExt(ExtractFileName(f),".jpg");
TJPEGImage *j=new TJPEGImage;
if (ext==".bmp")
{
Graphics::TBitmap *b=new Graphics::TBitmap;
b->LoadFromFile(f);
j->Assign(b);
j->CompressionQuality=90;
j->Compress();
delete b;
}
else
{
TFileStream *fs=new TFileStream(f,fmOpenRead);
j->LoadFromStream(fs);
delete fs;
}
DataModule1->ADODataSet1->Edit();
DBEdit2->Text=jpg;
TStream *bs=DataModule1->ADODataSet1->CreateBlobStream(
DataModule1->ADODataSet1->FieldByName("照片图像"),bmReadWrite);
bs->Position=0;
j->SaveToStream(bs);
delete j;
delete bs;
DispJpg();
}
}
}
}
2
记住一定要在post前delete TADOBlobStream对象。
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你在ttable中用了固定字段,就更简单了,以下的ADOTable1pic字段就是
读取access中的blob数据
TMemoryStream *s = new TMemoryStream();
ADOTable1pic->SaveToStream(s);
s->Position=0; //****流首位置必须为零***
TJPEGImage *jp = new TJPEGImage();
jp->LoadFromStream(s);
Image1->Picture->Bitmap->Assign(jp);
delete jp;
delete s;
写数据到access的blob字段
if (OpenDialog1->Execute())
{ADOTable1->DisableControls();
ADOTable1->Append();
ADOTable1pic->LoadFromFile(OpenDialog1->FileName);
ADOTable1name->Value=OpenDialog1->FileName;
ADOTable1->Post();
ADOTable1->EnableControls();
}
3
void __fastcall TForm2::DBImage2Click(TObject *Sender)
{
try
{
if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension = UpperCase(ExtractFileExt(OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
if(MyFilesExtension==".BMP")
{
EditDataSource1->DataSet->Edit();
DataModule1->FindADODataSetDSDesigner7->LoadFromFile(OpenPictureDialog1->FileName);
}
}
}
catch(...)
{
StatusBar1->Panels->Items[1]->Text="保存图像发生异常";
}
}
4
在BCB中采用下术方法存入图片,不过显示代码不用写了,DBImage自动显示.
if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension = UpperCase(ExtractFileExt(OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
数据类型一定要是image
存jpeg到SQL数据库:
if(OpenPictureDialog1->Execute())
{
ADOQuery1->Edit();
TBlobField *Field = (TBlobField*)ADOQuery1->FieldByName("photo");
Field->LoadFromFile(OpenPictureDialog1->FileName);
ADOQuery1->Post();
}
//以下是从数据库读jpeg,并显示在TDBImage控件中
#include <clipbrd.hpp>
TStream *Stream1;
TJPEGImage *Pjp;
Pjp=new TJPEGImage();
ADOQuery1->Open();
try
{
Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("treenodes"), bmRead);//treenodes是存放jpeg内容的字段,它的类型一定要用image
Pjp->LoadFromStream(Stream1);
//Image2是TDBImage组件,它的DateSource,和FieldName属性要空着
Image2->Picture->Bitmap->Assign(Pjp);
delete Stream1;
}
__finally
{
ADOQuery1->Close();
delete Pjp;
}
下面是别人的更好的方法,可存各种图形
以下是讀出各種類型的圖片的程序,支持ADO,BDE或TClientDataSet
#define PICTURE_MAP__(TBit) {TBit *PG = new TBit(); \
try {PG->LoadFromStream(TmpStream);\
Pic->Assign(PG); \
}\
catch(...)\
{delete PG ;\
return false;\
}\
delete PG;\
}
//----------------------------------------------------------------
//該模板將二進制字段中的圖像(GIF或JPG等等)使用Assign方法轉為TPicture,TBitmap等等。
template <class T >
bool LoadPhotoFromField(TField *F_Photo,const AnsiString Format,T *Pic)
{if(!F_Photo->DataSet->Active) return false ;
if(F_Photo->IsNull) return false ;
else
{TStream *TmpStream = F_Photo->DataSet->CreateBlobStream(F_Photo,bmRead);
if(Format == ".JPG" || Format == ".JPEG")PICTURE_MAP__(TJPEGImage )
else if(Format == ".BMP") PICTURE_MAP__(Graphics::TBitmap)
// else if(Format == ".GIF") PICTURE_MAP__(TGIFImage )
else if(Format == ".ICO") PICTURE_MAP__(TIcon)
else if(Format == ".WMF" || Format ==".EMF") PICTURE_MAP__(TMetafile)
else return false ;
}
return true;
}
#undef PICTURE_MAP__(TBit)
//如果要支持GIF,那你要安裝支持GIF的VCL類。
支持多種格式
存入:
if(OpenPictureDialog1->Execute())
{DataSet->Edit();
TBlobField *Field = (TBlobField*)DataSet->FieldByName("photo");
Field->LoadFromFile(OpenPictureDialog1->FileName);
DataSet->FieldByName("photoFormat")->AsString =
ExtractFileExt(OpenPictureDialog1->FileName).UpperCase();
DataSet->Post();
}
lihongxing2002
2004-12-20
打赏
举报
回复
up
bmp
位图
文件
的读取与
保存
c++源代码 实现bmp
位图
文件
的读取与
保存
二进制
方法读取bmp的像素信息
计算机网络安全技术:图像
文件
的
二进制
表示.pdf
1. BMP 图像
文件
格式分析 1.1
文件
组成:
文件
除了存储内容以外,还会在
文件
头部存储一些
文件
的属性信息,如
文件
类型,大小,时间等。
文件
组成 ={
文件
头,数据组织方式等}+
文件
数据 图像
文件
的
二进制
表示 1.2 文本
文件
的
文件
头 使用记事本,输入 “11111”,以unicode 编码方式
保存
文件
。发现除了1 的ASCII 编码0031 以外,在
文件
开始的部分多了 “FF FE ”,这个FF FE 就是
文件
头标志,表示这是一个以unicode 编码,小端方式 (little endian) 储存的文本
文件
。 图像
文件
的
二进制
表示 使用写字板wordpad.exe ,输入 “11111”
保存
为rtf
文件
,然后打开,发现除了 11111之上,多出了更多的信息,这就是用来组织
文件
结构的
文件
头信息。 图像
文件
的
二进制
表示 1.3 BMP
文件
的
文件
头 BMP
文件
的数据按照从
文件
头开始的先后顺序分为四个部分: bmp
文件
头 (bmp file header):提供
文件
的格式、大小等信息
位图
信息头 (bitmap information):提供图像数据的尺寸、位平面数、
Resource Hacker 4.0中文汉化版.rar
软件介绍: Resource Hacker是一款用来修改EXE/DLL等资源的小工具,资源查看器,编译和反编译工具。可以替换资源里面的内容,替换图片修改数据。可将资源
保存
为
二进制
文件
或
保存
为RES/RC
文件
,支持替换图标,替换光标
位图
及其他资源,可添加一个
文件
资源,添加一个
二进制
资源。查看32/64位可执行应用程序
gridworld阶段3答案
根据前面介绍或自己在网上查找的资料,利用本实验提供的软装置实现ImageReader软件,需要实现以下功能: 1. 利用
二进制
流读取Bitmap
位图
文件
。注意,这里要求不能使用Java提供的API进行读取; 2. 把读取彩色图像转换成灰度图像; 3. 提取并且显示彩色图像各个色彩通道; 4. 把处理完的图像
保存
为jpg格式图像。注意,这里可以使用Java提供的API完成,但本文档不提供,希望各位同学自行上网查找资料自学。如果学有余力的同学,可以实现按照
二进制
流输出
保存
jpg图像;
vc+odbc+access如何对数据库中的
位图
读取和存入
在用Visual C++编写应用程序时,常会遇到如何存取数据库中大对象的问题。大对象文档以
二进制
数据形式
保存
在BLOB类型的字段中,这些大对象可能是Word、Execl或图片
文件
等,目前多数数据库都支持BLOB类型的字段。 VC存取这些大对象数据有众多方法,如OLE、ActiveX等,事实上VC的MFC提供了一个很方便的实现方法,即利用MFC提供的CLongBinary类可以方便地实现存取BLOB字段。下面笔者将举例说明。
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章