LPBYTE lpBits;
lpBits=new unsigned char[nWidth*nHeight];
.......lpBits中包含一副nWidth*nHeight大小的灰度图像数据,
我想把它写到一个文本文件result.txt中去 CString cFile = GetWorkDir(NULL);//一个函数得到当前工作路径
cFile += "result.txt";
CFile f;
CFileException e;
if(!f.Open(cFile,CFile::modeCreate|CFile::modeReadWrite ,&e)) f.Write(lpBits,nWidth*nHeight);
f.Close();显示结果好像是ASCII码,如何正确显示灰度值(0-255)?
我想每写完一行(nWidth)就输出一个换行符,
这样能按图像的排列显示,这个怎么实现?
lpBits=new unsigned char[nWidth*nHeight];
.......lpBits中包含一副nWidth*nHeight大小的灰度图像数据,
我想把它写到一个文本文件result.txt中去 CString cFile = GetWorkDir(NULL);//一个函数得到当前工作路径
cFile += "result.txt";
CFile f;
CFileException e;
if(!f.Open(cFile,CFile::modeCreate|CFile::modeReadWrite ,&e)) f.Write(lpBits,nWidth*nHeight);
f.Close();显示结果好像是ASCII码,如何正确显示灰度值(0-255)?
我想每写完一行(nWidth)就输出一个换行符,
这样能按图像的排列显示,这个怎么实现?
一个一个数据写入文件,
用两个 for 遍历数组 写文件
pBuffer=new unsigned char[4];
for(x=0;x<nWidth;x++)
{
for(int y=0;y<nHeight;y++)
{
for(int n=0;n<3;n++)
{
*(pBuffer+2-n)=*(lpBits+y*10+x) % 10 +48;
*(lpBits+y*10+x)=*(lpBits+y*10+x)/10; } if(y<nHeight)
{
*(pBuffer+3)=32; }
else
{
*(pBuffer+3)=10;
}
f.Write(pBuffer,4); }
}
LPBYTE pBuffer;
pBuffer=new unsigned char[4];
for(x=0;x<nWidth;x++)
{
for(int y=0;y<nHeight;y++)
{
for(int n=0;n<3;n++)
{
//将灰度值取余并将Ascii转换成10进制数
*(pBuffer+2-n)=*(lpBits+y*10+x) % 10 +48;
//灰度值右移一位
*(lpBits+y*10+x)=*(lpBits+y*10+x)/10; } if(y<nHeight)
{
*(pBuffer+3)=32; //空格的Ascii }
else
{
*(pBuffer+3)=10;//这里我想输入换行 可是没实现?!
}
f.Write(pBuffer,4); }
}
这个方法好像有点笨吧整数还行,要是小数或者位数未知的一个数据怎么输出啊?!幸好知道灰度值也就在(0-255)之间大家看看有没有别的方法,再是换行怎么整啊?