Fixed: #1669 DefineBitsJPEG3/4 alpha premultiplied

This commit is contained in:
Jindra Petřík
2021-03-28 15:14:09 +02:00
parent 9b5ff98347
commit 33b7668fcc
2 changed files with 34 additions and 2 deletions

View File

@@ -223,7 +223,23 @@ public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag {
int[] pixels2 = ((DataBufferInt) img2.getRaster().getDataBuffer()).getData();
for (int i = 0; i < pixels.length; i++) {
int a = alphaData[i] & 0xff;
pixels2[i] = (pixels[i] & 0xffffff) | (a << 24);
int b = (pixels[i] >> 16) & 0xff;
int g = (pixels[i] >> 8) & 0xff;
int r = (pixels[i]) & 0xff;
r = (int) Math.floor(r * 255.0 / a);
g = (int) Math.floor(g * 255.0 / a);
b = (int) Math.floor(b * 255.0 / a);
if (r > 255) {
r = 255;
}
if (g > 255) {
g = 255;
}
if (b > 255) {
b = 255;
}
pixels2[i] = (a << 24) | (b << 16) | (g << 8) | r;
}
return img2;

View File

@@ -227,7 +227,23 @@ public class DefineBitsJPEG4Tag extends ImageTag implements AloneTag {
int[] pixels2 = ((DataBufferInt) img2.getRaster().getDataBuffer()).getData();
for (int i = 0; i < pixels.length; i++) {
int a = alphaData[i] & 0xff;
pixels2[i] = (pixels[i] & 0xffffff) | (a << 24);
int b = (pixels[i] >> 16) & 0xff;
int g = (pixels[i] >> 8) & 0xff;
int r = (pixels[i]) & 0xff;
r = (int) Math.floor(r * 255.0 / a);
g = (int) Math.floor(g * 255.0 / a);
b = (int) Math.floor(b * 255.0 / a);
if (r > 255) {
r = 255;
}
if (g > 255) {
g = 255;
}
if (b > 255) {
b = 255;
}
pixels2[i] = (a << 24) | (b << 16) | (g << 8) | r;
}
return img2;