📄 1.cpp
字号:
#include "stdio.h"
#include "io.h"
#include "windows.h"
#define B 0.8
#define W0 360
#define H0 360
BITMAPFILEHEADER bitmapfileheader; //图象头
BITMAPINFOHEADER bitmapinfoheader; //信息头
FILE *fp; //文件指针
FILE *fpa;
BYTE r[H0][W0],g[H0][W0],b[H0][W0];
double h[H0][W0],s[H0][W0];
void main()
{
int i,j;
int rate;
if((fp=fopen("out.bmp","w"))==NULL) {
printf("File write error!\n");
exit(0);
} //打开文件
if((fpa=fopen("a.txt","w"))==NULL) {
printf("File write error!\n");
exit(0);
} //打开文件
bitmapfileheader.bfType='B'+'M'*256;
bitmapfileheader.bfSize=388800;
bitmapfileheader.bfReserved1=0;
bitmapfileheader.bfReserved2=0;
bitmapfileheader.bfOffBits=54;
bitmapinfoheader.biSize=40;
bitmapinfoheader.biWidth=360;
bitmapinfoheader.biHeight=341;
bitmapinfoheader.biPlanes=1;
bitmapinfoheader.biBitCount=24;
bitmapinfoheader.biCompression=0;
bitmapinfoheader.biSizeImage=388854;
bitmapinfoheader.biXPelsPerMeter=0;
bitmapinfoheader.biYPelsPerMeter=0;
bitmapinfoheader.biClrUsed=0;
bitmapinfoheader.biClrImportant=0; //参数赋值
fwrite(&bitmapfileheader,14,1,fp);
fwrite(&bitmapinfoheader,40,1,fp); //写文件头文件和头信息
for(i=0;i<360;i++)
{
for(j=0;j<360;j++)
{ h[i][j]=j;
s[i][j]=i;
}
} //图象的HSB值
for(i=0;i<360;i++)
{
for(j=0;j<360;j++)
{ rate=int (h[i][j]/60);
switch(rate){
case 0:{ r[i][j]=BYTE (255*B);
b[i][j]=BYTE ((1-s[i][j]/360)*r[i][j]);
g[i][j]=BYTE (h[i][j]*(r[i][j]-b[i][j])/60+b[i][j]);};break;
case 1:{ g[i][j]=BYTE (255*B);
b[i][j]=BYTE ((1-s[i][j]/360)*g[i][j]);
r[i][j]=BYTE ((120-h[i][j])*(g[i][j]-b[i][j])/60+b[i][j]);};break;
case 2:{ g[i][j]=BYTE (255*B);
r[i][j]=BYTE ((1-s[i][j]/360)*g[i][j]);
b[i][j]=BYTE ((h[i][j]-120)*(g[i][j]-r[i][j])/60+r[i][j]);};break;
case 3:{ b[i][j]=BYTE (255*B);
r[i][j]=BYTE ((1-s[i][j]/360)*b[i][j]);
g[i][j]=BYTE ((240-h[i][j])*(b[i][j]-r[i][j])/60+r[i][j]);};break;
case 4:{ b[i][j]=BYTE (255*B);
g[i][j]=BYTE ((1-s[i][j]/360)*b[i][j]);
r[i][j]=BYTE ((h[i][j]-240)*(b[i][j]-g[i][j])/60+g[i][j]);};break;
case 5:{ r[i][j]=BYTE (255*B);
g[i][j]=BYTE ((1-s[i][j]/360)*r[i][j]);
b[i][j]=BYTE ((360-h[i][j])*(r[i][j]-g[i][j])/60+g[i][j]);};break;
}
}
} //HSB转换为RGB值
for(i=0;i<379;i++)
{ for(j=0;j<360;j++)
{
fwrite(&b[i][j],1,1,fp);
fwrite(&g[i][j],1,1,fp);
fwrite(&r[i][j],1,1,fp);
}
}
for(i=300;i<360;i++)
{ for(j=0;j<200;j++)
fprintf(fpa," %d",r[i][j]);
fprintf(fpa,"\n");
}
if(fclose(fp)) {
printf("Can not close the file!\n");
exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -