List of usage examples for java.awt.image.renderable ParameterBlock addSource
public ParameterBlock addSource(Object source)
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; /*/*from w w w . j ava 2 s . c o 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
/**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 w w . j a v a2 s .c om*/ 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:imageLines.ImageHelpers.java
/**Perform a binary thresholding on the image using 1 of 5 methods 0-IterativeThreshold//from w w w .ja v a 2s. c om 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 ww w. j a v a2s . 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:net.daimonin.client3d.editor.main.Editor3D.java
/** * Builds a single PNG out of all ImageSetImages, considering their calculated * coordinates.//from w w w. j a v a2 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. jav a 2 s .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:omr.jai.RGBToBilevel.java
RGBToBilevel(final String fileName, boolean isErrorDiffusion) { // Load the file. PlanarImage src = JAI.create("fileload", fileName); // Load the ParameterBlock for the dithering operation // and set the operation name. ParameterBlock pb = new ParameterBlock(); pb.addSource(src); String opName = null;// w w w. ja va2 s . c o m if (isErrorDiffusion) { opName = "errordiffusion"; LookupTableJAI lut = new LookupTableJAI(new byte[][] { { (byte) 0x00, (byte) 0xff }, { (byte) 0x00, (byte) 0xff }, { (byte) 0x00, (byte) 0xff } }); pb.add(lut); pb.add(KernelJAI.ERROR_FILTER_FLOYD_STEINBERG); } else { opName = "ordereddither"; ColorCube cube = ColorCube.createColorCube(DataBuffer.TYPE_BYTE, 0, new int[] { 2, 2, 2 }); pb.add(cube); pb.add(KernelJAI.DITHER_MASK_443); } // Create a layout containing an IndexColorModel which maps // zero to zero and unity to 255; force SampleModel to be bilevel. ImageLayout layout = new ImageLayout(); byte[] map = new byte[] { (byte) 0x00, (byte) 0xff }; ColorModel cm = new IndexColorModel(1, 2, map, map, map); layout.setColorModel(cm); SampleModel sm = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, src.getWidth(), src.getHeight(), 1); layout.setSampleModel(sm); // Create a hint containing the layout. RenderingHints hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout); // Dither the image. final PlanarImage dst = JAI.create(opName, pb, hints); // Exit on window closing. addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { JAI.create("filestore", dst, fileName + ".out", "PNG", null); System.exit(0); } }); // Display the result. //// ATTENTION A REMPLACER : add(new ScrollingImagePanel(dst, dst.getWidth(), dst.getHeight())); pack(); setVisible(true); }
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); pb.add(zoom);// www. ja v a 2s .c o m 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); pb.add(scale);/* w w w . j ava2 s . com*/ 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); pb.add(scale);/*from w ww.j ava2 s . co m*/ 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; }