| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:还是关于bmp文件的问题,有些错误麻烦帮帮忙!!!
只看楼主 加入收藏
cokilee
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-2-23
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
还是关于bmp文件的问题,有些错误麻烦帮帮忙!!!
我写出了源码,不过就是有错误,自己也不知道怎么解决了...
程序代码:
#include <CONIO.H>
#include <STDLIB.H>
#include <STDIO.H>
#include <MATH.H>
#include <string.h>
#include <malloc.h>
#include <string.h>



typedef unsigned char BYTE;
typedef unsigned short WROD;
typedef unsigned long DWORD;


//******文件头**********
#include<pshpack2.h>
//sizeof(BITMAPFILEHEADR)=14, otherwise sizeof(BITMAPFILEHEADER)=16
typedef struct tagBITMAPFILEHEADR
{
    WORD bfType;
    DWORD bfSize;
    WORD bfReserved1;
    WORD bfReserved2;
    DWORD bfOffBits;
}BITMAPFILEHEADER;


//******信息头********
#include<poppack.h>
typedef struct tagBITMAPINFOHEADER
{
    DWORD biSize;
    LONG biWidth;
    LONG biHeight;
    WORD biPlanes;
    WORD biBitCount;
    DWORD biCompression;
    DWORD biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    DWORD biClrUsed;
    DWORD biClrImportant;
}BITMAPINFOHEADER;


//************BMP图像RGB数据**********
typedef struct tagRGBDATA
{
    BYTE rgbBlue;
    BYTE rgbRed;
    BYTE rgbGreen;
}RGBDATA;


main()
{
    RGBDATA *bmpdata=NULL;
    long width=128;
    long height=128;
    long datasize=widht*height;
    BITMAPFILEHEADER bmfHeader;
    BITMAPINFOHEADER bmiHeader;
    FILE *p,*fp;
    int i,j,k,x=0,y=0;
    char temp[128];
    char dz[112][128];
    fp=fopen("coki.txt","r");
    if(!fp)//打开TXT文本
    {
        printf("error!!!\n");
        exit(0);
    }
    for(i=0;i<112;i++)//行循环;从TXT文本读取数据,存入点阵dz[][]中
    {
        fscanf("%s",temp);
        for(y=0;y<128;y++)//列循环
        {
            if(temp[y]=='_'||temp[y]=='X')
                dz[x][y]=temp[y];
            if(temp[y]==',')
                dz[x][y]=dz[x][y-1];//读掉“,”
        }
        x++;
    }




    /***********创建BMP文件**************/
    p=fopen("coki.bmp","wb+");
    if(!p)
    {
        printf("error!!!\n");
        exit(0);
    }


    //第二步:置文件头数据并写入BMP文件
    bmfHeader.bfType=0x4d42;
    bmfHeader.bfSize=14+40+width*height*3;
    bmfHeader.bfReserved1=0;
    bmfHeader.bfReserved2=0;
    bmfHeader.bfoffBits=0x36;
    fwrite(&bmfHeader, sizeof(BITMAPFILEHEADER), 1, p);

    //第三步:置信息头数据并写入BMP文件
    bmiHeader.biSize=40;
    bmiHeader.biWidth=width;
    bmiHeader.biHeight=height;
    bmiHeader.biPlanes=1;
    bmiHeader.biBitCount=24;
    bmiHeader.biCompress=0;
    bmiHeader.biSizeImage=width*height*3;
    bmiHeader.biXPeIsPerMeter=0;
    bmiHeader.biYPeIsPerMeter=0;
    bmiHeader.biCIrUsed=0;
    bmiHeader.biClrImprotant=0;
    fwrite(&bmiHeader, sizeof(BITMAPINFOHEADER), 1, p);

    //第四步:写入RGB数据
    //申请一块内存,放入RGB数据
    bmpdata=(RGBDATA* )malloc(width*height*3);
    if(!bmpdata)
    {
        printf("error!!!\n");
    }

    /*//设置边框
    for(i=0;i<height;i++)
    {
        if(i<8||i>120)
        {
            for(j=0;j<width;j++)
                dz1[i][j]='X';
        }
        else
        {
            for(j=0;j<8;j++)
                dz1[i][j]='X';
            for(j=120;j<128;j++)
                dz1[i][j]='X';
        }
    }*/
    for(i=0;i<height;i++)
    {
        for(j=0;j<width;j++)
        {
            k=(height-i-1)*width+j;
            if(temp[x][y]=='_')
            {
                bmpdata[k].rgbBule=255;
                bmpdata[k].rgbRed=255;
                bmpdata[k].rgbGreen=255;
            }
            if(temp[x][y]=='X')
            {
                bmpdata[k].rgbBlue=12;
                bmpdata[k].rgbRed=12;
                bmpdata[k].rgbGreen=12;
            }
        }
    }
            fwrite(bmpdata,sizeof(RGBDATA),datasize,p);
            printf("BMP文件成功生成\n");
            free(bmpdata);
            fclose(fp);
            //fclose(p);
}
其中错误主要有:
程序代码:
G:\vc6\BMP\2-27\z.cpp(21) : error C2146: syntax error : missing ';' before identifier 'bfType'
G:\vc6\BMP\2-27\z.cpp(21) : error C2501: 'WORD' : missing storage-class or type specifiers
G:\vc6\BMP\2-27\z.cpp(21) : error C2501: 'bfType' : missing storage-class or type specifiers
G:\vc6\BMP\2-27\z.cpp(23) : error C2146: syntax error : missing ';' before identifier 'bfReserved1'G:\vc6\BMP\2-27\z.cpp(100) : error C2039: 'bfType' : is not a member of 'tagBITMAPFILEHEADR'
        G:\vc6\BMP\2-27\z.cpp(20) : see declaration of 'tagBITMAPFILEHEADR'
G:\vc6\BMP\2-27\z.cpp(102) : error C2039: 'bfReserved1' : is not a member of 'tagBITMAPFILEHEADR'
        G:\vc6\BMP\2-27\z.cpp(20) : see declaration of 'tagBITMAPFILEHEADR'
谁能帮我看看...
搜索更多相关主题的帖子: color 
2011-02-28 14:40
xiangberlin
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2011-2-22
收藏
得分:20 
输入错误。。。。。自己检查!
2011-02-28 15:40
cokilee
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-2-23
收藏
得分:0 
o了,我自己也发现了
2011-02-28 15:40
a346489584
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-2
收藏
得分:0 
请问LZ这个程序能正确的生成印章么?
2011-03-02 17:28
快速回复:还是关于bmp文件的问题,有些错误麻烦帮帮忙!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027172 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved