BMP 그림 의 데이터 구조
5687 단어 잡담
#include"stdio.h"
#include
#include
//
struct BITMAPFILEHEADER
{
byte bfType;/* */
DWORD bfSize;/* , */
byte bfReserved1;
byte bfReserved2;
DWORD bfOffBits;/* */
};
struct BITMAPINFOHEADER
{
DWORD biSize;/* */
LONG biWidth;/* , */
LONG biHeight;/* , */
byte biPlanes;
byte biBitCount;/* , 1 4 8 24*/
DWORD biCompression;/* 0 */
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;/* ,0 */
};
struct RGB_QUAD
{
byte rgbBlue;/* */
byte rgbGreen;/* */
byte rgbRed;/* */
byte rgbReversed;/* */
};
struct RGB_QUAD img[1000][1000];// 1000*1000
int main(void)
{
BITMAPFILEHEADER fileHeader;//
BITMAPINFOHEADER infoHeader;//
printf("Please indicate the path and filename of the input image(For example:F:\\in.bmp): ");
char str_in[100];
memset(str_in,'\0',sizeof(str_in));
scanf("%s",str_in);
printf("Please indicate the path and filename of the output image(For example:F:\\out.bmp): ");
char str_out[100];
memset(str_out,'0',sizeof(str_out));
scanf("%s",str_out);
FILE *pfin=fopen(str_in,"rb");//
FILE *pfout=fopen(str_out,"wb");//
fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin);//
fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin);//
if(infoHeader.biBitCount==4)// 16
{
int size=infoHeader.biWidth*infoHeader.biHeight;
fread(img,sizeof(struct RGB_QUAD),size,pfin);//
int i,j;
for(i=0; i//
{
for(j=0; j3;
img[i][j].rgbGreen=img[i][j].rgbGreen<<2;
img[i][j].rgbRed=img[i][j].rgbRed<<3;
img[i][j].rgbBlue=img[i][j].rgbGreen=img[i][j].rgbRed=img[i][j].rgbBlue*0.11+img[i][j].rgbGreen*0.59+img[i][j].rgbRed*0.30;
}
}
fwrite(&fileHeader,sizeof(fileHeader),1,pfout);//
fwrite(&infoHeader,sizeof(infoHeader),1,pfout);//
fwrite(img,sizeof(struct RGB_QUAD),size,pfout);//
}
else
{
printf(" 16 BMP
");
}
fclose(pfin);//
fclose(pfout);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Koin원티드나 로켓펀치로 내가 일할 곳은 어디인가 하는 마음으로 경건히 안드로이드 개발자 구직 글을 보다 보면 우대조건에 mvp,mvvm,di,rxjava는 거의 고정이다. (경력은 자격요건에 다 요구) mvvm을 제외하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.