final int height = image.getHeight(); final int tileHeight = image.getTileHeight(); final int tileWidth = image.getTileWidth();
FileOutputStream fos = new FileOutputStream("C:/test/output/myFile.tif"); RenderedOp src = JAI.create("fileload", "C:/test/input/myFile.jpg"); BufferedImage buf = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_BINARY); buf.getGraphics().drawImage(src.getAsBufferedImage(), 0, 0, null); RenderedImage ri = (RenderedImage) buf; encodeParam = new TIFFEncodeParam (); encodeParam.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4); ImageEncoder enc = ImageCodec.createImageEncoder("TIFF", fos, encodeParam); enc.encode(ri);
.getCode(), /* {6} */ targetImage.getHeight(),
private RenderedOp getBandSourceImage(int i) { RenderedOp bandImage = BandSelectDescriptor.create(sourceImage, new int[]{i}, null); int tileWidth = bandImage.getTileWidth(); int tileHeight = bandImage.getTileHeight(); ImageLayout imageLayout = new ImageLayout(); boolean noSourceImageTiling = tileWidth == bandImage.getWidth() && tileHeight == bandImage.getHeight(); if (noSourceImageTiling) { tileWidth = Math.min(bandImage.getWidth(), 512); tileHeight = Math.min(bandImage.getHeight(), 512); imageLayout.setTileWidth(tileWidth); imageLayout.setTileHeight(tileHeight); } imageLayout.setSampleModel(new SingleBandedSampleModel(bandImage.getSampleModel().getDataType(), tileWidth, tileHeight)); bandImage = FormatDescriptor.create(bandImage, bandImage.getSampleModel().getDataType(), new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout)); return bandImage; }
BufferedImage res = new BufferedImage( torgb.getWidth(), torgb.getHeight(), TYPE_BYTE_INDEXED, newModel ); res.setData( data );
img = JAI.create("SubsampleAverage", rawImage, ratioX, ratioY, mt.getRenderingHints()); fat.concatenate(AffineTransform.getTranslateInstance(-img.getWidth() / 2.0, -img.getHeight() / 2.0)); g2.drawRenderedImage(img, fat); } else {
img = JAI.create("SubsampleAverage", rawImage, ratioX, ratioY, mt.getRenderingHints()); fat.concatenate(AffineTransform.getTranslateInstance(-img.getWidth() / 2.0, -img.getHeight() / 2.0)); g2.drawRenderedImage(img, fat); } else {
private RenderedOp toRgb(RenderedOp renderedOp) { if (renderedOp.getColorModel().getColorSpace().getType() == ColorSpace.TYPE_RGB) { return renderedOp; } ColorSpace rgbColorSpace = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB); boolean hasAlpha = false; boolean isAlphaPremultiplied = false; int transparency = ColorModel.OPAQUE; int transferType = DataBuffer.TYPE_BYTE; ColorModel rgbColorModel = new ComponentColorModel(rgbColorSpace, hasAlpha, isAlphaPremultiplied, transparency, transferType); SampleModel rgbSampleModel = rgbColorModel.createCompatibleSampleModel(renderedOp.getWidth(), renderedOp.getHeight()); ImageLayout il = new ImageLayout(); il = new ImageLayout(); il.setSampleModel(rgbSampleModel); RenderingHints hints = new RenderingHints(null); hints.put(JAI.KEY_IMAGE_LAYOUT, il); ParameterBlock pb = new ParameterBlock(); pb.addSource(renderedOp); pb.add(rgbColorModel); renderedOp = JAI.create("ColorConvert", pb, hints); return renderedOp; }
final int height = bandRenderedOps[0].getHeight();
private void assertCopy(RenderedImage src, RenderedOp op, int dataType) { // check it's a copy with the expected values assertEquals(src.getMinX(), op.getMinX()); assertEquals(src.getWidth(), op.getWidth()); assertEquals(src.getMinY(), op.getMinY()); assertEquals(src.getHeight(), op.getHeight()); assertEquals(dataType, op.getSampleModel().getDataType()); RandomIter srcIter = RandomIterFactory.create(src, null); RandomIter opIter = RandomIterFactory.create(op, null); for(int y = src.getMinY(); y < src.getMinY() + src.getHeight(); y++) { for(int x = src.getMinX(); x < src.getMinX() + src.getWidth(); x++) { double expected = srcIter.getSampleDouble(x, y, 0); double actual = opIter.getSampleDouble(x, y, 0); assertEquals(expected, actual, 0d); } } }
@Test public void testSum() { RenderedImage src1 = buildTestImage(10, 10); RenderedImage src2 = buildTestImage(10, 10); RenderedOp op = JiffleDescriptor.create(new RenderedImage[] {src1, src2}, new String[] {"a", "b"}, "res", "res = a + b;", null, DataBuffer.TYPE_INT, null, null, null); // check same size and expected assertEquals(src1.getMinX(), op.getMinX()); assertEquals(src1.getWidth(), op.getWidth()); assertEquals(src1.getMinY(), op.getMinY()); assertEquals(src1.getHeight(), op.getHeight()); assertEquals(DataBuffer.TYPE_INT, op.getSampleModel().getDataType()); RandomIter srcIter = RandomIterFactory.create(src1, null); RandomIter opIter = RandomIterFactory.create(op, null); for(int y = src1.getMinY(); y < src1.getMinY() + src1.getHeight(); y++) { for(int x = src1.getMinX(); x < src1.getMinX() + src1.getWidth(); x++) { double expected = srcIter.getSampleDouble(x, y, 0) * 2; double actual = opIter.getSampleDouble(x, y, 0); assertEquals(expected, actual, 0d); } } }