#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
static unsigned int s_rgb[90][60][3] = { 0 };
/**
* rgb24
* r:203 g:64,173,38 b:142
*/
int make_rgb24_colorbar()
{
FILE *fp = fopen("rgb_colorbar_90_60.rgb24", "wb+");
int width = 90;
int height = 60;
int i = 0;
int j = 0;
unsigned char chr = 0;
for (j = 0; j<height; j++)
{
for (i = 0; i < width; i++)
{
if (i<30)
{
chr = 203;
}
else if (i<60)
{
chr = 64;
}
else
{
chr = 0;
}
s_rgb[i][j][0] = chr;
fwrite(&chr, 1, 1, fp);
if (i<30)
{
chr = 0;
}
else if (i<60)
{
chr = 173;
}
else
{
chr = 0;
}
s_rgb[i][j][1] = chr;
fwrite(&chr, 1, 1, fp);
if (i<30)
{
chr = 0;
}
else if (i<60)
{
chr = 38;
}
else
{
chr = 142;
}
s_rgb[i][j][2] = chr;
fwrite(&chr, 1, 1, fp);
}
}
fclose(fp);
return 0;
}
/*最近邻内插*/
int scall_to_1half5()
{
FILE *fp = fopen("rgb_colorbar_135_90.rgb24", "wb+");
int width = 135;
int height = 90;
int ii = 0;
int jj = 0;
int i = 0;
int j = 0;
char chr = 0;
for (j = 0; j<height; j++)
{
for (i = 0; i < width; i++)
{
//从新位置根据放大率计算原图像位置,但是可能出现锯齿
ii = (i + 1) * 2 / 3 - 1;
ii = ii >= 0 ? ii : 0;
jj = (j + 1) * 2 / 3 - 1;
jj = jj >= 0 ? jj : 0;
chr = s_rgb[ii][jj][0];
fwrite(&chr, 1, 1, fp);
chr = s_rgb[ii][jj][1];
fwrite(&chr, 1, 1, fp);
chr = s_rgb[ii][jj][2];
fwrite(&chr, 1, 1, fp);
}
}
fclose(fp);
return 0;
}
int main()
{
make_rgb24_colorbar();
scall_to_1half5();
return 0;
}
原图像:90*60
放大1.5倍图像:135*90