< prev index next >
src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java
Print this page
@@ -1161,12 +1161,11 @@
// Determine if all of the relevant output bands have the
// same bit depth as the source data
boolean adjustBitDepths = false;
int[] outputSampleSize = imRas.getSampleModel().getSampleSize();
- int numBands = outputSampleSize.length;
- for (int b = 0; b < numBands; b++) {
+ for (int b = 0; b < inputBands; b++) {
if (outputSampleSize[b] != bitDepth) {
adjustBitDepths = true;
break;
}
}
@@ -1175,12 +1174,12 @@
// the conversion
int[][] scale = null;
if (adjustBitDepths) {
int maxInSample = (1 << bitDepth) - 1;
int halfMaxInSample = maxInSample/2;
- scale = new int[numBands][];
- for (int b = 0; b < numBands; b++) {
+ scale = new int[inputBands][];
+ for (int b = 0; b < inputBands; b++) {
int maxOutSample = (1 << outputSampleSize[b]) - 1;
scale[b] = new int[maxInSample + 1];
for (int s = 0; s <= maxInSample; s++) {
scale[b][s] =
(s*maxOutSample + halfMaxInSample)/maxInSample;
@@ -1302,11 +1301,11 @@
dstX < updateMinX + updateWidth;
dstX += updateXStep) {
passRow.getPixel(newSrcX, 0, ps);
if (adjustBitDepths) {
- for (int b = 0; b < numBands; b++) {
+ for (int b = 0; b < inputBands; b++) {
ps[b] = scale[b][ps[b]];
}
}
if (tRNSTransparentPixelPresent) {
if (metadata.tRNS_colorType == PNG_COLOR_RGB) {
< prev index next >