颜色数据只是颜色数据,不包含标题。运行我的代码后,新尺寸的图片仅显示黑色像素,底部显示一些随机的深色。尺寸,宽度和高度都很好,但颜色。
//code to change to bigger image
int r, c, i, j;
for (r = 0; r < height; r++)
{
for (c = 0; c < width*3; c++)
{
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
if (j == 0)
{
bigColorData[2*r+i][c] = oldColorData[r][c];
}
else
{
bigColorData[2*r+i][2*c+2] = oldColorData[r][c];
}
}
}
}
}
答案 0 :(得分:0)
从c < width*3
我推断出你正在使用3像素每像素像素(24位颜色)。
但是这不起作用,因为扫描线(宽度)向上舍入到最近的单词,所以循环必须是:
int bits= 3*8;
int scanlinesize= ((bits + 31) / 32 * 4);
unsigned char *pix, *scanline= begin_of_image_data;
for (r = 0; r < height; r++, scanline += scanlinesize)
{
pix= scanline;
for (c = 0; c < width; c++, pix += 3)
{
// now pix points to the first byte of the pixel