| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 397 人关注过本帖
标题:我又来了 来看一看 帮一帮吧!!!
只看楼主 加入收藏
一根如草
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-2-18
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:1 
我又来了 来看一看 帮一帮吧!!!
#include <CONIO.H>   
#include <STDLIB.H>   
#include <STDIO.H>   
#include <MATH.H>   
#include <MALLOC.H>
#include <string.h>
   
typedef unsigned char BYTE;   
typedef unsigned short WORD;   
typedef unsigned long DWORD;   
   
/****  The file header of bmp file 位图文件头*****/
#include <pshpack2.h> //This file turns 2 byte packing of structures on, then sizeof(BITMAPFILEHEADER)=14, otherwise sizeof(BITMAPFILEHEADER)=16
typedef struct tagBITMAPFILEHEADER {   
    WORD bfType;   
    DWORD bfSize;   
    WORD bfReserved1;   
    WORD bfReserved2;
    DWORD bfoffBits;                                                
} BITMAPFILEHEADER;
#include <poppack.h> //This file turns packing of structures off
   
/****  The information header of bmp file 位图信息头*****/
typedef struct tagBITMAPINFOHEADER {   
    DWORD biSize;   
    DWORD biWidth;   
    DWORD biHeight;   
    WORD  biPlanes;   
    WORD  biBitCount;      
    DWORD biCompress;
    DWORD biSizeImage;   
    DWORD biXPeIsPerMeter;   
    DWORD biYPeIsPerMeter;   
    DWORD biCIrUsed;   
    DWORD biClrImprotant;   
} BITMAPINFOHEADER;   
   
/****  The RGB data of bmp file 图像RGB数据*****/
typedef struct tagRGBDATA{   
    BYTE rgbBlue;      
    BYTE rgbGreen;
    BYTE rgbRed;   
} RGBDATA;

int main(int argc, char *argv[])
{
    RGBDATA *bmpData=NULL;    //图像数据指针
    FILE *fp;                //BMP文件指针
    long i,j,k;
    long width=128;            //图像宽度
    long height=128;        //图像高度
    long dataSize=width*height;
    BITMAPFILEHEADER bmfHeader;   
    BITMAPINFOHEADER bmiHeader;

    if(argc<2)
    {
        printf("\n    请指定您要生成的BMP文件名!\n");
        printf("\n    方法1:在cmd窗口输入: demo  xxxx.bmp 后回车执行!\n");
        printf("\n    方法2:在VC的工程设置中添加参数: xxxx.bmp 后编译运行!\n");
        printf("\n    功能: 根据设定红绿蓝三色分量的值,控制显示不同的彩色条纹!\n\n");
        exit(0);
    }        

    printf("\n    ********************************************************************************\n");
    printf("\n         感谢您使用BMP图片文件制作DEMO程序                 \n");
    printf("\n             作者:兰良鑫                 \n");
    printf("\n             日期:2014年2月21日                 \n");
    printf("\n             目的:编制印章生成程序时,供参考!       \n");
    printf("\n             功能:根据设定红绿蓝三色分量的值,控制显示不同的彩色条纹!\n\n");
    printf("\n    ********************************************************************************\n\n");

    //第一步:用命令行中给出的文件名新建一BMP文件,此时还是一个空文件
    if((fp=fopen(argv[1], "wb+"))==NULL)
    {
        printf("Cannot open BMP file!");
        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, fp);

    //第三步:置信息头数据并写入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, fp);

    //第四步:置图像RGB数据并写入BMP文件
    //分配足够内存,让bmpData指向这块内存,用于存放图像各象素点的RGB分量值
    if((bmpData=(RGBDATA*)malloc(width*height*3))==NULL)
    {
        printf("bmpData memory malloc error!");
    }   
    //先在bmpData所指内存中置图像RGB数据,然后将所有数据写入BMP文件
    for(i=0;i<height;i++)
    {
        for(j=0;j<width;j++)
        {
            k=(height-i-1)*width + j;//计算bmp图片中第i行第j列图像数据在bmpData[]数组中的位置
            if(i<100)//上100行只置红色分量值,显示为红色
            {
                bmpData[k].rgbBlue=0;
                bmpData[k].rgbGreen=0;
                bmpData[k].rgbRed=255;//红色分量值为:255
            }
            else
                if(i<200)//中100行只置绿色分量值,显示为绿色
                {
                    bmpData[k].rgbBlue=0;
                    bmpData[k].rgbGreen=255;//绿色分量值为:255
                    bmpData[k].rgbRed=0;
                }
                else
                    if(i<300)//下100行只置蓝色分量值,显示为蓝色
                    {
                        bmpData[k].rgbBlue=255;//蓝色分量值为:255
                        bmpData[k].rgbGreen=0;
                        bmpData[k].rgbRed=0;
                    }
        }
    }
    fwrite(bmpData,sizeof(RGBDATA),dataSize,fp);//将bmpData所指内存中的RGB数据一次性写入BMP文件

    printf("\n    恭喜您!BMP文件已经成功生成!\n");
    printf("\n    请在当前目录下查看生成的BMP文件%s\n\n",argv[1]);

    free(bmpData);    //释放bmpData所指的内存空间
    bmpData=NULL;    //置bmpData为空指针
    fclose(fp);        //关闭fp所指文件

}
如何是上面的程序改成   印章生产程序    求大神给详细解答
搜索更多相关主题的帖子: otherwise include file 
2014-02-21 16:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
围观

DO IT YOURSELF !
2014-02-21 16:13
快速回复:我又来了 来看一看 帮一帮吧!!!
数据加载中...
 
   



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

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