|
|
|
@ -2806,7 +2806,7 @@ static int stbi__process_marker(stbi__jpeg *z, int m) |
|
|
|
|
if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); |
|
|
|
|
|
|
|
|
|
for (i=0; i < 64; ++i) |
|
|
|
|
z->dequant[t][stbi__jpeg_dezigzag[i]] = sixteen ? stbi__get16be(z->s) : stbi__get8(z->s); |
|
|
|
|
z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); |
|
|
|
|
L -= (sixteen ? 129 : 65); |
|
|
|
|
} |
|
|
|
|
return L==0; |
|
|
|
@ -3611,20 +3611,20 @@ static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp |
|
|
|
|
} else if (z->s->img_n == 4) { |
|
|
|
|
if (z->app14_color_transform == 0) { // CMYK
|
|
|
|
|
for (i=0; i < z->s->img_x; ++i) { |
|
|
|
|
stbi_uc k = coutput[3][i]; |
|
|
|
|
out[0] = stbi__blinn_8x8(coutput[0][i], k); |
|
|
|
|
out[1] = stbi__blinn_8x8(coutput[1][i], k); |
|
|
|
|
out[2] = stbi__blinn_8x8(coutput[2][i], k); |
|
|
|
|
stbi_uc m = coutput[3][i]; |
|
|
|
|
out[0] = stbi__blinn_8x8(coutput[0][i], m); |
|
|
|
|
out[1] = stbi__blinn_8x8(coutput[1][i], m); |
|
|
|
|
out[2] = stbi__blinn_8x8(coutput[2][i], m); |
|
|
|
|
out[3] = 255; |
|
|
|
|
out += n; |
|
|
|
|
} |
|
|
|
|
} else if (z->app14_color_transform == 2) { // YCCK
|
|
|
|
|
z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); |
|
|
|
|
for (i=0; i < z->s->img_x; ++i) { |
|
|
|
|
stbi_uc k = coutput[3][i]; |
|
|
|
|
out[0] = stbi__blinn_8x8(255 - out[0], k); |
|
|
|
|
out[1] = stbi__blinn_8x8(255 - out[1], k); |
|
|
|
|
out[2] = stbi__blinn_8x8(255 - out[2], k); |
|
|
|
|
stbi_uc m = coutput[3][i]; |
|
|
|
|
out[0] = stbi__blinn_8x8(255 - out[0], m); |
|
|
|
|
out[1] = stbi__blinn_8x8(255 - out[1], m); |
|
|
|
|
out[2] = stbi__blinn_8x8(255 - out[2], m); |
|
|
|
|
out += n; |
|
|
|
|
} |
|
|
|
|
} else { // YCbCr + alpha? Ignore the fourth channel for now
|
|
|
|
@ -3649,10 +3649,10 @@ static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp |
|
|
|
|
} |
|
|
|
|
} else if (z->s->img_n == 4 && z->app14_color_transform == 0) { |
|
|
|
|
for (i=0; i < z->s->img_x; ++i) { |
|
|
|
|
stbi_uc k = coutput[3][i]; |
|
|
|
|
stbi_uc r = stbi__blinn_8x8(coutput[0][i], k); |
|
|
|
|
stbi_uc g = stbi__blinn_8x8(coutput[1][i], k); |
|
|
|
|
stbi_uc b = stbi__blinn_8x8(coutput[2][i], k); |
|
|
|
|
stbi_uc m = coutput[3][i]; |
|
|
|
|
stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); |
|
|
|
|
stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); |
|
|
|
|
stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); |
|
|
|
|
out[0] = stbi__compute_y(r, g, b); |
|
|
|
|
out[1] = 255; |
|
|
|
|
out += n; |
|
|
|
|