Fix #33357: Strip modificator Bright/Contrast doesn't work correct for byte images
This commit is contained in:
@@ -427,17 +427,17 @@ static void brightcontrast_apply_threaded(int width, int height, unsigned char *
|
|||||||
unsigned char *pixel = rect + pixel_index;
|
unsigned char *pixel = rect + pixel_index;
|
||||||
|
|
||||||
for (c = 0; c < 3; c++) {
|
for (c = 0; c < 3; c++) {
|
||||||
i = pixel[c];
|
i = (float) pixel[c] / 255.0f;
|
||||||
v = a * i + b;
|
v = a * i + b;
|
||||||
|
|
||||||
if (mask_rect) {
|
if (mask_rect) {
|
||||||
unsigned char *m = mask_rect + pixel_index;
|
unsigned char *m = mask_rect + pixel_index;
|
||||||
float t = (float) m[c] / 255.0f;
|
float t = (float) m[c] / 255.0f;
|
||||||
|
|
||||||
pixel[c] = pixel[c] * (1.0f - t) + v * t;
|
v = (float) pixel[c] * (1.0f - t) + v * t;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
pixel[c] = v;
|
pixel[c] = FTOCHAR(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rect_float) {
|
else if (rect_float) {
|
||||||
|
|||||||
Reference in New Issue
Block a user