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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章