/** * Create a new instance of TransparencyFillOpImage in the rendered layer. This method satisfies * the implementation of RIF. * * @param paramBlock The source image and the dilation kernel. */ public RenderedImage create(ParameterBlock paramBlock, RenderingHints renderHints) { // Get ImageLayout from renderHints if any. ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints); // Get BorderExtender from renderHints if any. BorderExtender extender = RIFUtil.getBorderExtenderHint(renderHints); if (extender == null) { extender = BorderExtender.createInstance(BorderExtender.BORDER_COPY); } FillType type = TransparencyFillDescriptor.FILL_AVERAGE; Object param0 = paramBlock.getObjectParameter(0); if (param0 != null && param0 instanceof FillType) { type = (FillType) param0; } RenderedImage source = paramBlock.getRenderedSource(0); return new TransparencyFillOpImage(source, extender, type, renderHints, layout); } }
extender.extend(dest, sourceImage);
new RenderingHints( JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY)));
this.borderExtender = BorderExtender.createInstance(DEFAULT_BORDER_EXTENDER_TYPE); } else this.borderExtender = be; if (index + 1 < interpolations.length) {
public static RenderedImage blur(RenderedImage image, int radius) { int klen = Math.max(radius, 2); int ksize = klen * klen; float f = 1f / ksize; float[] kern = new float[ksize]; for (int i = 0; i < ksize; i++) kern[i] = f; KernelJAI blur = new KernelJAI(klen, klen, kern); ParameterBlockJAI param = getParameterBlockJAIForImage(image, "Convolve"); param.setParameter("kernel", blur); // hint with border extender RenderingHints hint = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender .createInstance(BorderExtender.BORDER_COPY)); return JAI.create("Convolve", param, hint); } }
protected PlanarImage scaleUnit(PlanarImage image) { final RenderingHints hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_ZERO)); final ParameterBlockJAI pb = new ParameterBlockJAI("DivideByConst", RenderedRegistryMode.MODE_NAME); pb.setSource("source0", image); pb.setParameter("constants", new double[] { scaleArea }); return JAI.create("DivideByConst", pb, hints); }
hints.put( JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY));
private RenderedImage smoothImage(final RenderedImage rawImage) { final int slidingWindowWidth = windowWidth / blockWidth; final int slidingWindowHeight = windowHeight / blockHeight; final BorderExtender extender = BorderExtender.createInstance(BorderExtender.BORDER_REFLECT); final RenderingHints hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, extender); final ParameterBlock pb = new ParameterBlock(); pb.addSource(rawImage); pb.add(slidingWindowWidth); pb.add(slidingWindowHeight); pb.add(slidingWindowWidth / 2); pb.add(slidingWindowHeight / 2); return JAI.create("boxfilter", pb, hints); }
throws OperatorException { final Rectangle sourceRectangle = getSourceRectangle(targetRectangle); final BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY); final Tile elevationTile = getSourceTile(elevationBand, sourceRectangle, borderExtender); float[] elevationData = elevationTile.getDataBufferFloat();
private static RenderedOp createScaledImage(int targetWidth, int targetHeight, int sourceWidth, int sourceHeight, int sourceSampling, ProductData data, Dimension tileSize) { int tempW = sourceWidth * sourceSampling + 1; int tempH = sourceHeight * sourceSampling + 1; float xScale = (float) tempW / (float) sourceWidth; float yScale = (float) tempH / (float) sourceHeight; RenderingHints renderingHints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY)); RenderedImage srcImg = ImageUtils.createRenderedImage(sourceWidth, sourceHeight, data); ImageLayout imageLayout = new ImageLayout(0, 0, targetWidth, targetHeight, 0, 0, tileSize.width, tileSize.height, null, null); renderingHints.put(JAI.KEY_IMAGE_LAYOUT, imageLayout); RenderedOp tempImg = ScaleDescriptor.create(srcImg, xScale, yScale, -0.5f * sourceSampling + 1, -0.5f * sourceSampling + 1, Interpolation.getInstance(Interpolation.INTERP_BILINEAR), renderingHints); return CropDescriptor.create(tempImg, 0f, 0f, (float) targetWidth, (float) targetHeight, null); }
BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY); logger.finer(">>>>>>>> Border(" + iPad + ")"); result = BorderDescriptor.create(result, iPad, iPad, iPad, iPad, borderExtender, hints);
BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY); log.debug(">>>>>>>> Border({})", iPad); result = BorderDescriptor.create(result, iPad, iPad, iPad, iPad, borderExtender, hints);
final Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);
final Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);
@Override protected RenderedImage createImage(int level) { ImageManager imageManager = ImageManager.getInstance(); RenderingHints rh = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance( BorderExtenderCopy.BORDER_COPY)); PlanarImage geophysicalImage = imageManager.getGeophysicalImage(getSource(), level); int dataBufferType = getDataType() == ProductData.TYPE_FLOAT64 ? DataBuffer.TYPE_DOUBLE : DataBuffer.TYPE_FLOAT; geophysicalImage = FormatDescriptor.create(geophysicalImage, dataBufferType, null); PlanarImage validMaskImage = imageManager.getValidMaskImage(getSource(), level); if (validMaskImage != null) { geophysicalImage = new FillConstantOpImage(geophysicalImage, validMaskImage, Float.NaN); } return createSourceLevelImage(geophysicalImage, level, rh); } };
Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);
@Override protected PlanarImage execute (PadBlackOp operation, final EditableImage image, PlanarImage planarImage) { ParameterBlock pb = new ParameterBlock(); int width = planarImage.getData().getWidth(); int height = planarImage.getData().getHeight(); int padx = width; int pady = height; pb.addSource(planarImage); pb.add(padx); pb.add(padx); pb.add(pady); pb.add(pady); pb.add(BorderExtender.createInstance(BorderExtender.BORDER_ZERO)); planarImage = JAI.create("border", pb); JAIUtils.logImage(log, ">>>> PadBlackOp returning", planarImage); return planarImage; } }
BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_ZERO);
final Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);
final Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); BorderExtender borderExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);