< prev index next >
modules/graphics/src/main/java/com/sun/javafx/iio/png/PNGImageLoader2.java
Print this page
rev 8890 : RT-40778
*** 293,309 ****
}
public void dispose() {
}
- private ImageMetadata updateMetadata() {
- ImageMetadata metaData = new ImageMetadata(null, true,
- null, null, null, null, null, width, height, null, null, null);
- updateImageMetadata(metaData);
- return metaData;
- }
-
private ImageStorage.ImageType getType() {
switch (colorType) {
case PNG_COLOR_GRAY:
return tRNS_present
? ImageStorage.ImageType.GRAY_ALPHA
--- 293,302 ----
*** 645,657 ****
if (dataSize == 0) {
emitWarning("No image data in PNG");
return null;
}
int bpp = bpp();
ByteBuffer bb = ByteBuffer.allocate(bpp * width * height);
- ImageMetadata metadata = updateMetadata();
PNGIDATChunkInputStream iDat = new PNGIDATChunkInputStream(stream, dataSize);
Inflater inf = new Inflater();
InputStream data = new BufferedInputStream(new InflaterInputStream(iDat, inf));
--- 638,657 ----
if (dataSize == 0) {
emitWarning("No image data in PNG");
return null;
}
+ int[] outWH = ImageTools.computeDimensions(width, height, rWidth, rHeight, preserveAspectRatio);
+ rWidth = outWH[0];
+ rHeight = outWH[1];
+
+ ImageMetadata metaData = new ImageMetadata(null, true,
+ null, null, null, null, null, rWidth, rHeight, null, null, null);
+ updateImageMetadata(metaData);
+
int bpp = bpp();
ByteBuffer bb = ByteBuffer.allocate(bpp * width * height);
PNGIDATChunkInputStream iDat = new PNGIDATChunkInputStream(stream, dataSize);
Inflater inf = new Inflater();
InputStream data = new BufferedInputStream(new InflaterInputStream(iDat, inf));
*** 664,696 ****
inf.end();
}
}
ImageFrame imgPNG = colorType == PNG_COLOR_PALETTE
! ? decodePalette(bb.array(), metadata)
! : new ImageFrame(getType(), bb, width, height, bpp * width, palette, metadata);
! // need remove scaler form loader
! int[] outWH = ImageTools.computeDimensions(width, height, rWidth, rHeight, preserveAspectRatio);
!
! if (width != outWH[0] || height != outWH[1]) {
! imgPNG = scaleImage(imgPNG, outWH[0], outWH[1], smooth);
}
return imgPNG;
}
-
- private ImageFrame scaleImage(ImageFrame imgPNG, int rWidth, int rHeight, boolean smooth) {
- byte image[] = ((ByteBuffer) imgPNG.getImageData()).array();
- int bpp = ImageStorage.getNumBands(imgPNG.getImageType());
-
- PushbroomScaler scaler = ScalerFactory.createScaler(width, height, bpp,
- rWidth, rHeight, smooth);
-
- for (int y = 0; y != height; ++y) {
- scaler.putSourceScanline(image, y * width * bpp);
- }
-
- return new ImageFrame(imgPNG.getImageType(), scaler.getDestination(),
- rWidth, rHeight, rWidth * bpp, null, imgPNG.getMetadata());
- }
}
--- 664,678 ----
inf.end();
}
}
ImageFrame imgPNG = colorType == PNG_COLOR_PALETTE
! ? decodePalette(bb.array(), metaData)
! : new ImageFrame(getType(), bb, width, height, bpp * width, palette, metaData);
! if (width != rWidth || height != rHeight) {
! imgPNG = ImageTools.scaleImageFrame(imgPNG, rWidth, rHeight, smooth);
}
return imgPNG;
}
}
< prev index next >