Example usage for java.awt.image.renderable ParameterBlock add

List of usage examples for java.awt.image.renderable ParameterBlock add

Introduction

In this page you can find the example usage for java.awt.image.renderable ParameterBlock add.

Prototype

public ParameterBlock add(double d) 

Source Link

Document

Adds a Double to the list of parameters.

Usage

From source file:imageLines.ImageHelpers.java

/**Binarize a planar image. Only used internally.*/
private static BufferedImage binarize(int threshold, PlanarImage image) {
    // Binarizes the original image.
    if (threshold > 5)
        threshold -= 3;//from   w  ww.  j  a  v a 2s . co  m
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(image);
    pb.add(1.0 * threshold);
    // Creates a new, thresholded image and uses it on the DisplayJAI component
    PlanarImage thresholdedImage = JAI.create("binarize", pb);
    return thresholdedImage.getAsBufferedImage();
}

From source file:fr.gael.dhus.datastore.processing.impl.ProcessingUtils.java

public static RenderedImage ResizeImage(RenderedImage image, int width, int height, float max_ratio,
        boolean can_cut) {
    RenderedImage resizedImage = image;

    /*/* w  w w. j  a  v a 2s.co  m*/
    // Select the displayable bands
    if (resizedImage.getNumBands () <= 2)
    {
       logger.debug("Grayscale image case");
       resizedImage = JAI.create("bandselect",
       resizedImage, new int[] { 0 });
    }
    else
    {
       logger.debug("RGB image case: [1 2 3]");
       resizedImage = JAI.create("bandselect",
       resizedImage, new int[] {0, 1, 2});
    }
    */

    // Cut image if necessary
    if (can_cut == true) {
        resizedImage = ProcessingUtils.cutQuickLook(resizedImage, 2.0, 2);
        logger.debug("Image resized and cutted in band : " + resizedImage.getWidth() + "x"
                + resizedImage.getHeight());

    }

    // Computes ratio and scale
    float scale = 1;
    if (resizedImage.getWidth() >= resizedImage.getHeight()) {
        scale = (float) ((double) width / (double) resizedImage.getWidth());
    } else {
        scale = (float) ((double) height / (double) resizedImage.getHeight());
    }

    // Processing resize process
    ParameterBlock pb = new ParameterBlock();
    // The source image
    pb.addSource(resizedImage);
    // The xScale
    pb.add(scale);
    // The yScale
    pb.add(scale);
    // The x translation
    pb.add(0.0F);
    // The y translation
    pb.add(0.0F);
    // The interpolation
    pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC));
    resizedImage = JAI.create("scale", pb, null);

    logger.debug("Image resized to : " + resizedImage.getWidth() + "x" + resizedImage.getHeight());

    if ((width != resizedImage.getWidth()) && (height != resizedImage.getHeight())) {
        logger.debug("Final resize to complete expected image output");
        resizedImage = ResizeImage(resizedImage, width, height, 0, false);
    } else {
        pb = new ParameterBlock().addSource(resizedImage);
        pb.add(new float[] { 0.002f }); // normalize factor 0.02%
        pb.add(null); // visible region
        pb.add(4); // x period
        pb.add(4); // y period
        resizedImage = JAI.create("normalize", pb);

        /* Does not work because of color model issue
        resizedImage = ColorQuantizerDescriptor.create(
              resizedImage, ColorQuantizerDescriptor.OCTTREE,
              new Integer(255), new Integer(300), null, new Integer(4),
              new Integer(4), null);
        */
    }
    return resizedImage;
}

From source file:imageLines.ImageHelpers.java

/**Perform a binary thresholding on the image using 1 of 5 methods
 0-IterativeThreshold//from  w w w.  j  a v  a  2s .  co m
 1-MaxEntropyThreshold
 2-Maximum Variance
3-Minimum Error
 4-Minimum Fuzziness
 */
public static BufferedImage binaryThreshold(BufferedImage img, int method) {
    PlanarImage j = PlanarImage.wrapRenderedImage(img); //JAI.create("fileload", imageFile.getPath());
    //double[][] matrix = {{ 0.114, 0.587, 0.299, 0 }};
    double[][] matrix = { { 0.114, 0.587, 0.299, 0 } };
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(j);
    pb.add(matrix);
    try {
        j = JAI.create("bandcombine", pb);
    } catch (IllegalArgumentException e) {

    }
    pb = new ParameterBlock();
    pb.addSource(j);
    pb.add(null); // The ROI
    pb.add(1);
    pb.add(1);
    pb.add(new int[] { 256 });
    pb.add(new double[] { 0 });
    pb.add(new double[] { 256 });
    // Calculate the histogram of the image.
    PlanarImage dummyImage = JAI.create("histogram", pb);
    Histogram h = (Histogram) dummyImage.getProperty("histogram");
    // Calculate the thresholds based on the selected method.
    double[] thresholds = null;

    switch (method) {
    case 0: // Iterative Bisection
        thresholds = h.getIterativeThreshold();
        break;
    case 1: // Maximum Entropy
        thresholds = h.getMaxEntropyThreshold();
        break;
    case 2: // Maximum Variance
        thresholds = h.getMaxVarianceThreshold();
        break;
    case 3: // Minimum Error
        thresholds = h.getMinErrorThreshold();
        break;
    case 4: // Minimum Fuzziness
        thresholds = h.getMinFuzzinessThreshold();
        break;

    }
    int threshold = (int) thresholds[0];
    BufferedImage bin = (binarize(threshold, j));
    return bin;
}

From source file:fr.gael.dhus.datastore.processing.ProcessingUtils.java

public static RenderedImage resizeImage(RenderedImage image, int width, int height, float max_ratio,
        boolean can_cut) {
    RenderedImage resizedImage = image;

    /*/*from w  w w  .  j a  va2 s. com*/
    // Select the displayable bands
    if (resizedImage.getNumBands () <= 2)
    {
       logger.debug("Grayscale image case");
       resizedImage = JAI.create("bandselect",
       resizedImage, new int[] { 0 });
    }
    else
    {
       logger.debug("RGB image case: [1 2 3]");
       resizedImage = JAI.create("bandselect",
       resizedImage, new int[] {0, 1, 2});
    }
    */

    // Cut image if necessary
    if (can_cut == true) {
        resizedImage = ProcessingUtils.cutQuickLook(resizedImage, 2.0, 2);
        logger.debug("Image resized and cutted in band : " + resizedImage.getWidth() + "x"
                + resizedImage.getHeight());

    }

    // Computes ratio and scale
    float scale = 1;
    if (resizedImage.getWidth() >= resizedImage.getHeight()) {
        scale = (float) ((double) width / (double) resizedImage.getWidth());
    } else {
        scale = (float) ((double) height / (double) resizedImage.getHeight());
    }

    // Processing resize process
    ParameterBlock pb = new ParameterBlock();
    // The source image
    pb.addSource(resizedImage);
    // The xScale
    pb.add(scale);
    // The yScale
    pb.add(scale);
    // The x translation
    pb.add(0.0F);
    // The y translation
    pb.add(0.0F);
    // The interpolation
    pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC));
    resizedImage = JAI.create("scale", pb, null);

    logger.debug("Image resized to : " + resizedImage.getWidth() + "x" + resizedImage.getHeight());

    if ((width != resizedImage.getWidth()) && (height != resizedImage.getHeight())) {
        logger.debug("Final resize to complete expected image output");
        resizedImage = resizeImage(resizedImage, width, height, 0, false);
    } else {
        pb = new ParameterBlock().addSource(resizedImage);
        pb.add(new float[] { 0.002f }); // normalize factor 0.02%
        pb.add(null); // visible region
        pb.add(4); // x period
        pb.add(4); // y period
        resizedImage = JAI.create("normalize", pb);

        /* Does not work because of color model issue
        resizedImage = ColorQuantizerDescriptor.create(
              resizedImage, ColorQuantizerDescriptor.OCTTREE,
              new Integer(255), new Integer(300), null, new Integer(4),
              new Integer(4), null);
        */
    }
    return resizedImage;
}

From source file:net.daimonin.client3d.editor.main.Editor3D.java

/**
* Builds a single PNG out of all ImageSetImages, considering their calculated
* coordinates.// www .j  a v  a  2  s. co  m
* 
* @param fileNameImageSet Name of resulting PNG.
* @param dimension [width, height] of the resulting PNG. where 0 is maximum
*          compression, 1 is no compression at all.
* @throws IOException IOException.
*/
private static void writeImageSet(final String fileNameImageSet, final int[] dimension) throws IOException {

    BufferedImage bigImg = new BufferedImage(dimension[0], dimension[1], BufferedImage.TYPE_INT_ARGB);
    Graphics2D big = bigImg.createGraphics();
    for (int i = 0; i < images.size(); i++) {
        if (images.get(i).getBorderSize() > 0) {
            ParameterBlock params = new ParameterBlock();
            params.addSource(images.get(i).getImage());
            params.add(images.get(i).getBorderSize()); // left pad
            params.add(images.get(i).getBorderSize()); // right pad
            params.add(images.get(i).getBorderSize()); // top pad
            params.add(images.get(i).getBorderSize()); // bottom pad
            params.add(new BorderExtenderConstant(new double[] { images.get(i).getBorderColor().getRed(),
                    images.get(i).getBorderColor().getGreen(), images.get(i).getBorderColor().getBlue(),
                    BORDERCOLORMAX }));

            big.drawImage(JAI.create("border", params).getAsBufferedImage(), images.get(i).getPosX(),
                    images.get(i).getPosY(), null);

        } else {
            big.drawImage(images.get(i).getImage(), images.get(i).getPosX(), images.get(i).getPosY(), null);
        }
    }

    big.dispose();
    ImageIO.write(bigImg, "png", new File(fileNameImageSet));
    printInfo(System.getProperty("user.dir") + "/" + imageset + " created");
}

From source file:net.filterlogic.util.imaging.ToTIFF.java

/**
* convert rgb image to grayscale//w w  w.j ava2s . c o  m
*
* typical weights for converting RGB to Grayscale
* gray = 0.3*red + 0.59*green + 0.11*blue
*/
public static synchronized RenderedOp convertRGBToGrayscaleImage(RenderedImage ri) {
    double[][] matrix = { { 0.3D, 0.59D, 0.11D, 0D } };
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(ri);
    pb.add(matrix);
    return JAI.create("BandCombine", pb, null);
}

From source file:adams.data.imagemagick.PPMOutputConsumer.java

/**
 * Reads the ppm input stream into a {@link BufferedImage}.
 * /*from   w w  w.j  a  v a2  s  .  co m*/
 * @param stream      the stream to read from
 * @throws IOException   if reading from stream fails
 */
@Override
public void consumeOutput(InputStream stream) throws IOException {
    byte[] bytes;
    ByteArraySeekableStream bstream;
    ParameterBlock pb;
    RenderedOp op;

    m_Image = null;
    bytes = IOUtils.toByteArray(stream);
    bstream = new ByteArraySeekableStream(bytes);
    pb = new ParameterBlock();
    pb.add(bstream);
    op = JAI.create("PNM", pb);
    m_Image = op.getAsBufferedImage();
}

From source file:com.alibaba.simpleimage.ScaleTest.java

public PlanarImage doSubsampleAverage(PlanarImage op) throws Exception {
    double zoom = dScale;
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(op);/*from   w w  w .  j  av a2s.c  om*/
    pb.add(zoom);
    pb.add(zoom);

    RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY);
    RenderedOp zoomOp = JAI.create("SubsampleAverage", pb, qualityHints);

    return zoomOp;
}

From source file:com.alibaba.simpleimage.ScaleTest.java

public PlanarImage doScaleNearest(PlanarImage op) throws Exception {
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(op);//from  w  w w .  j a  v  a 2 s .  c o  m
    pb.add(scale);
    pb.add(scale);
    pb.add(0.0F);
    pb.add(0.0F);
    pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST));
    RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY);
    op = JAI.create("scale", pb, qualityHints);

    return op;
}

From source file:com.alibaba.simpleimage.ScaleTest.java

public PlanarImage doScaleBilinear(PlanarImage op) throws Exception {
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(op);/*from   www  .  j  a  v  a  2 s . c o m*/
    pb.add(scale);
    pb.add(scale);
    pb.add(0.0F);
    pb.add(0.0F);
    pb.add(Interpolation.getInstance(Interpolation.INTERP_BILINEAR));
    RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY);
    op = JAI.create("scale", pb, qualityHints);

    return op;
}