bmp文件

F12 CTRK d 搜索

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void _fread(const char* DestFile)
{
    FILE* fpRead = fopen(DestFile,"rb");
    BITMAPFILEHEADER  bf;
    BITMAPINFOHEADER  bs;
    fread(&bf,1,sizeof(bf),fpRead);
    fread(&bs,1,sizeof(bs), fpRead);
    printf(" bfType: %c%c\t\t--说明文件类型\n",bf.bfType% 256, bf.bfType/256);
    printf(" bfSize: %d\t--说明该位图文件的大小,用字节为单位\n",bf.bfSize);
    printf(" bfReserved1: %d\t\t--保留,必须设置为0\n", bf.bfReserved1);
    printf(" bfReserved2: %d\t\t--保留,必须设置为0\n", bf.bfReserved2);
    printf(" bfOffBits: %d\t\t--说明从文件头开始到实际的图像数据之间的字节偏移量\n", bf.bfOffBits);
    printf(" 位图信息头:\n");
    printf(" bfType: %d\t\tBITMAPINFOHEADER结构所需要的字数 \n", bs.biSize);
    printf(" biWidth: %d\t\t--说明图像的宽度,用像素为单位\n", bs.biWidth);
    printf(" biHeight: %d\t\t--说明像素高度,以像素为单位\n", bs.biHeight);
    printf(" biPlanes: %d\t\t--为目标设备说明颜色平面数一般为1\n", bs.biPlanes);
    printf(" biBitCount: %d\t\t--说明比特数/像素,其值为1、4、8、16、24或32\n", bs.biBitCount);
    printf(" biCompression: %d\t--说明图像数据压缩的类型,取值范围\n", bs.biCompression);
    printf(" biSizeImage: %d\t--说明图像的大小\n", bs.biSizeImage);
    printf(" biXPelsPerMeter: %d\t--说明水平分辨率,用像素/米表示,有符号数\n", bs.biXPelsPerMeter);
    printf(" biYPelsPerMeter: %d\t--说明垂直分辨率,用像素/米表示,有符号整数\n", bs.biYPelsPerMeter);
    printf("  biClrUsed: %d\t\t--说明位图实际使用的彩色表中的颜色索引数\n", bs.biClrUsed);
    printf(" biClrImportant: %d\t--说明对图像显示有重要影响的颜色索引的数目\n", bs.biClrImportant);
    fclose(fpRead);
}
void main()
{
    const char Dest[] = "C:\\Users\\mbdn\\Desktop\\test.bmp";
    _fread(Dest);
    getchar();
}
//void main(int argc,char* argv[])
//{
//  getchar();
//  _fread(argv[1]);
//  getchar();
//}
#include <Windows.h>
#include <cstdio>
#include <cstdlib>

void _fread(FILE* fpRead, FILE* fp)
{
    BITMAPFILEHEADER  bf;
    BITMAPINFOHEADER  bs;
    fread(&bf, 1, sizeof(bf), fpRead);
    fread(&bs, 1, sizeof(bs), fpRead);
    //fseek(fpRead, sizeof(BITMAPFILEHEADER), SEEK_END);
    //int fileLen = ftell(fpRead); 
    ////fseek(fpRead,sizeof(BITMAPFILEHEADER),SEEK_CUR);
    //fseek(fpRead,0,SEEK_SET);
    /*char* buffer = (char*)malloc(fileLen + 1 );
    memset(buffer,0,fileLen+1);*/

    /*bs.biHeight = 603;
    bs.biWidth = 603;
    bs.biSizeImage = 603 * 603 * 3;
    bs.biXPelsPerMeter = 0;
    bs.biYPelsPerMeter = 0;*/
    bs.biHeight = 1008;
    bs.biSizeImage =bs.biHeight * bs.biWidth * 3;
    fwrite(&bf, 1, sizeof(bf), fp);
    fwrite(&bs, 1, sizeof(bs), fp);
    for (int j = 0; j < bs.biHeight; j++)
    {
        for (int i=0;i<bs.biWidth;i++)
        {
            if (j==i)
            {
                fputc(0x91, fp); 
                fputc(0xc5, fp);
                fputc(0xEE, fp);
                continue;
            }
            if (i+j==1008)
            {
                fputc(0x85, fp);
                fputc(0xe6, fp);
                fputc(0xEE, fp);
                continue;
            }
            fputc(0xeb, fp);
            fputc(0xeb, fp);
            fputc(0xeb, fp);

        }
    }
    fclose(fpRead);
    fclose(fp);
    //tagRGBQUAD;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值