< prev index next >
modules/graphics/src/main/java/com/sun/javafx/iio/jpeg/JPEGImageLoader.java
Print this page
rev 8890 : RT-40778
@@ -29,12 +29,10 @@
import com.sun.javafx.iio.ImageMetadata;
import com.sun.javafx.iio.ImageStorage.ImageType;
import com.sun.glass.utils.NativeLibLoader;
import com.sun.javafx.iio.common.ImageLoaderImpl;
import com.sun.javafx.iio.common.ImageTools;
-import com.sun.javafx.iio.common.PushbroomScaler;
-import com.sun.javafx.iio.common.ScalerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.security.AccessController;
import java.security.PrivilegedAction;
@@ -221,11 +219,11 @@
width = widthHeight[0];
height = widthHeight[1];
ImageMetadata md = new ImageMetadata(null, true,
null, null, null, null, null,
- inWidth, inHeight, null, null, null);
+ width, height, null, null, null);
updateImageMetadata(md);
ByteBuffer buffer = null;
@@ -249,49 +247,22 @@
if (buffer == null) {
throw new IOException("Error decompressing JPEG stream!");
}
- ImageFrame frame = null;
-
// Check whether the decompressed image has been scaled to the correct
- // dimensions. If not, downscalte it here. Note outData, outHeight, and
+ // dimensions. If not, downscale it here. Note outData, outHeight, and
// outWidth refer to the image as returned by the decompressor. This
// image might have been downscaled from the original source by a factor
// of N/8 where 1 <= N <=8.
if (outWidth != width || outHeight != height) {
- // Get the decompressed data array. Note that the code really should
- // be moidified to use direct buffers if and only if this post-
- // decompression scaling will NOT occur.
- byte[] outData;
- if (buffer.hasArray()) {
- outData = buffer.array();
- } else {
- outData = new byte[buffer.capacity()];
- buffer.get(outData);
- }
-
- PushbroomScaler scaler = ScalerFactory.createScaler(outWidth, outHeight,
- outNumComponents, width, height, smooth);
- int stride = outWidth * outNumComponents;
- int off = 0;
- for (int y = 0; y < outHeight; y++) {
- if (scaler.putSourceScanline(outData, off)) {
- break;
- }
- off += stride;
- }
- buffer = scaler.getDestination();
- frame = new ImageFrame(outImageType, buffer,
- width, height, width * outNumComponents, null, md);
- }
- else {
- frame = new ImageFrame(outImageType, buffer,
- outWidth, outHeight, outWidth * outNumComponents, null, md);
+ buffer = ImageTools.scaleImage(buffer,
+ outWidth, outHeight, outNumComponents, width, height, smooth);
}
- return frame;
+ return new ImageFrame(outImageType, buffer,
+ width, height, width * outNumComponents, null, md);
}
private static class Lock {
private boolean locked;
< prev index next >