public static RenderedImage scaleJAIImage( int requestedCols, int requestedRows, RenderedImage translatedImage, Interpolation interpolation) { if (interpolation == null) { interpolation = JGrassUtilities.interpolation; } ImageWorker worker = new ImageWorker(translatedImage); worker.scale( (float) requestedCols / (float) translatedImage.getWidth(), (float) requestedRows / (float) translatedImage.getHeight(), 0F, 0F, interpolation); return worker.getRenderedOperation(); }
w.scale( new Float(rescaleX), new Float(rescaleY),
/** Scales the underlying raster using the provided parameters. */ public ImageWorker scale( double xScale, double yScale, double xTrans, double yTrans, Interpolation interp) { ParameterBlock pb = new ParameterBlock(); pb.setSource(image, 0); // The source image. double[] scalingParams = new double[] {xScale, yScale, xTrans, yTrans}; scale(pb, scalingParams, interp, getRenderingHints()); // getting the new ROI property updateROI(true, SCALE_OP_NAME); return this; }
worker.scale( scaleX, scaleY,
1.0, 1.0, Math.round(tx.getTranslateX()), Math.round(tx.getTranslateY()) }; scale(pb, scalingParams, interpolation, localHints); updateNoData(background, image); updateROI(false, SCALE_OP_NAME); tx.getScaleX(), tx.getScaleY(), tx.getTranslateX(), tx.getTranslateY() }; scale(pb, scalingParams, interpolation, getRenderingHints()); updateNoData(background, image); updateROI(false, SCALE_OP_NAME);
private static BufferedImage rescaleImageViaPlanarImage( final Interpolation interpolation, final double rescaleX, final double rescaleY, final BufferedImage image) { final PlanarImage planarImage = new TiledImage(image, image.getWidth(), image.getHeight()); final ImageWorker w = new ImageWorker(planarImage); w.scale((float) rescaleX, (float) rescaleY, 0.0f, 0.0f, interpolation); final RenderedOp result = w.getRenderedOperation(); final Raster raster = result.getData(); final WritableRaster scaledImageRaster; if (raster instanceof WritableRaster) { scaledImageRaster = (WritableRaster) raster; } else { scaledImageRaster = raster.createCompatibleWritableRaster(); scaledImageRaster.setDataElements(0, 0, raster); } final ColorModel colorModel = image.getColorModel(); try { final BufferedImage scaledImage = new BufferedImage(colorModel, scaledImageRaster, image.isAlphaPremultiplied(), null); return scaledImage; } catch (final IllegalArgumentException e) { LOGGER.warn("Unable to rescale image", e); return image; } }
@Test public void testReleaseOnPlanarImage() throws Exception { BufferedImage bi = new BufferedImage(256, 256, BufferedImage.TYPE_4BYTE_ABGR); RenderedImage planar = new ImageWorker(bi) .scale(3, 3, 0, 0, Interpolation.getInstance(Interpolation.INTERP_NEAREST)) .getRenderedImage(); MetatileMapOutputFormat.split(key, planar); assertEquals(1, cleaner.getImages().size()); }