/** * Constructs and returns an instance of WritableRandomIter suitable for iterating over the given bounding rectangle within the given * WritableRenderedImage source. If the bounds parameter is null, the entire image will be used. * * @param im a WritableRenderedImage source. * @param bounds the bounding Rectangle for the iterator, or null. * @return a WritableRandomIter allowing read/write access to the source. */ public static WritableRandomIter createWritable(WritableRenderedImage im, Rectangle bounds) { if (bounds == null) { bounds = new Rectangle(im.getMinX(), im.getMinY(), im.getWidth(), im.getHeight()); } return new WritableRandomIterFallback(im, bounds); }
/** * Constructs and returns an instance of WritableRandomIter suitable for iterating over the given bounding rectangle within the given * WritableRenderedImage source. If the bounds parameter is null, the entire image will be used. * * @param im a WritableRenderedImage source. * @param bounds the bounding Rectangle for the iterator, or null. * @return a WritableRandomIter allowing read/write access to the source. */ public static WritableRandomIter createWritable(WritableRenderedImage im, Rectangle bounds) { if (bounds == null) { bounds = new Rectangle(im.getMinX(), im.getMinY(), im.getWidth(), im.getHeight()); } return new WritableRandomIterFallback(im, bounds); }
public void runScriptWithBuilder(String script, String destVar, WritableRenderedImage destImage) throws JiffleException { // Image bounds are taken from the destination image Rectangle imageBounds = new Rectangle( destImage.getMinX(), destImage.getMinY(), destImage.getWidth(), destImage.getHeight()); // The world bounds are the unit rectangle Rectangle2D worldBounds = new Rectangle2D.Double(0, 0, 1, 1); CoordinateTransform transform = CoordinateTransforms.unitBounds(imageBounds); JiffleBuilder builder = new JiffleBuilder(); // Set the processing area (world units) builder.worldAndNumPixels(worldBounds, destImage.getWidth(), destImage.getHeight()); // Set the script and the destination image with its transform builder.script(script).dest(destVar, destImage, transform); // This executes the script and writes the results into destImage builder.run(); } // docs end builder method
public void createRipplesImage(WritableRenderedImage destImg) { // image dimensions final int width = destImg.getWidth(); final int height = destImg.getHeight(); // first pixel coordinates int x = destImg.getMinX(); int y = destImg.getMinY(); // center pixel coordinates final int xc = x + destImg.getWidth() / 2; final int yc = y + destImg.getHeight() / 2; // constant term double C = Math.PI * 8; WritableRectIter iter = RectIterFactory.createWritable(destImg, null); do { double dy = ((double) (y - yc)) / yc; do { double dx = ((double) (x - xc)) / xc; double d = Math.sqrt(dx * dx + dy * dy); iter.setSample(Math.sin(d * C)); x++ ; } while (!iter.nextPixelDone()); x = destImg.getMinX(); y++; iter.startPixels(); } while (!iter.nextLineDone()); } // docs-end-method
} else if (input.getMinX() != output.getMinX() || input.getMinY() != output.getMinY() || input.getWidth() != output.getWidth() || input.getHeight() != output.getHeight())
|| renderedImage.getWidth() != writableRI.getWidth() || renderedImage.getHeight() != writableRI.getHeight() || renderedImage.getSampleModel().getNumBands() != writableRI.getSampleModel().getNumBands())
final int width = image.getWidth(); final int height = image.getHeight(); final Rectangle bounds = new Rectangle(xmin, ymin, width, height);