public void fillBackground(BufferedImage image) { Graphics2D graphics = (Graphics2D) image.getGraphics(); int imgWidth = image.getWidth(); int imgHeight = image.getHeight(); graphics.setColor(drawColor); int hInt = random.nextInt(8); graphics.fillArc(xInt, yInt, wInt, hInt, sAngleInt, eAngleInt); int xInt2 = random.nextInt(imgWidth); int yInt2 = random.nextInt(imgHeight); graphics.setColor(drawColor); graphics.setStroke(new BasicStroke(2 + 2 * random.nextFloat())); graphics.drawLine(xInt, yInt, xInt2, yInt2); graphics.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); int cp = 4 + random.nextInt(3); int[] xPoints = new int[cp];
private void init() { if (frame != null) frame.setVisible(false); frame = new JFrame(); offscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); onscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); offscreen = offscreenImage.createGraphics(); onscreen = onscreenImage.createGraphics(); setXscale(); setYscale(); offscreen.setColor(DEFAULT_CLEAR_COLOR); offscreen.fillRect(0, 0, width, height); setPenColor(); setPenRadius(); RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); offscreen.addRenderingHints(hints);
PathGradientContext( ColorModel cm , Rectangle deviceBounds , Rectangle2D userBounds , AffineTransform xform , RenderingHints hints ) { shape = (Shape)hints.get(Drawable.GRADIENT_SHAPE); if (shape == null) { throw new IllegalPathStateException("PathGradientPaint needs a shape to be set via the rendering hint Drawable.GRADIANT_SHAPE."); } this.deviceBounds = deviceBounds; this.userBounds = userBounds; this.xform = xform; this.hints = hints; gradientSteps = getGradientSteps(shape); Point2D start = new Point2D.Double(0, 0); Point2D end = new Point2D.Double(gradientSteps, 0); LinearGradientPaint gradientPaint = new LinearGradientPaint(start, end, fractions, colors, CycleMethod.NO_CYCLE, ColorSpaceType.SRGB, new AffineTransform()); Rectangle bounds = new Rectangle(0, 0, gradientSteps, 1); pCtx = gradientPaint.createContext(cm, bounds, bounds, new AffineTransform(), hints); }
public void setAntialias( boolean antiAlias ) { if ( antiAlias ) { RenderingHints hints = new RenderingHints( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON ); hints.add( new RenderingHints( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY ) ); hints.add( new RenderingHints( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ) ); // hints.add(new RenderingHints(RenderingHints.KEY_ALPHA_INTERPOLATION, // RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY)); gc.setRenderingHints( hints ); } }
private RenderingHints getHints() { final RenderingHints hints = new RenderingHints(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); return hints; }
/** * Replaces the values of all preferences for the rendering * algorithms with the specified <code>hints</code>. * The existing values for all rendering hints are discarded and * the new set of known hints and values are initialized from the * specified {@link Map} object. * Hint categories include controls for rendering quality and * overall time/quality trade-off in the rendering process. * Refer to the <code>RenderingHints</code> class for definitions of * some common keys and values. * @param hints the rendering hints to be set * @see RenderingHints */ public void setRenderingHints(Map<?,?> hints){ this._hints = new RenderingHints(null); this._hints.putAll(hints); }
protected BufferedImage renderNonStraightLines( SimpleFeatureSource featureSource, Style style, int width, int height, ReferencedEnvelope bounds) { MapContent mapContent = new MapContent(); mapContent.addLayer(new FeatureLayer(featureSource, style)); // instantiate and initiate the render StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mapContent); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // create the output image and add a dark background for testing the halo BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphics = image.createGraphics(); graphics.setColor(Color.LIGHT_GRAY); graphics.fillRect(0, 0, image.getWidth(), image.getHeight()); // render the lines with the chosen style renderer.paint(graphics, new Rectangle(0, 0, image.getWidth(), image.getHeight()), bounds); mapContent.dispose(); return image; } }
BufferedImage newImage = new BufferedImage( image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImage.createGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); return newImage; AffineTransform at = new AffineTransform(); at.concatenate(AffineTransform.getScaleInstance(1, -1)); at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight())); return createTransformed(image, at); BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImage.createGraphics(); g.transform(at); g.drawImage(image, 0, 0, null); g.dispose(); return newImage; LookupOp op = new LookupOp(lookup, new RenderingHints(null)); return op.filter(image, null);
import javax.swing.ImageIcon; import java.awt.image.BufferedImage; import java.awt.Image; import java.awt.Color; import java.awt.Graphics2D; import java.io.File; import javax.imageio.ImageIO; import java.awt.RenderingHints; public class ImgUtils { public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) { BufferedImage bi = null; try { ImageIcon ii = new ImageIcon(filename);//path to image bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = (Graphics2D) bi.createGraphics(); g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY)); g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null); } catch (Exception e) { e.printStackTrace(); return null; } return bi; } }
public void testAutoWrapLocalTransform() throws Exception { Style style = RendererBaseTest.loadStyle(this, "textWrapEnabled.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setMapContent(mc); int SIZE = 300; final BufferedImage image = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, SIZE, SIZE); g.setTransform( new AffineTransform( 1.1, Math.sin(Math.toRadians(15)), -Math.sin(Math.toRadians(15)), 1.1, 15, 20)); renderer.paint(g, new Rectangle(SIZE, SIZE), bounds); mc.dispose(); renderer.getMapContent().dispose(); String refPath = "./src/test/resources/org/geotools/renderer/lite/test-data/textWrapEnabledLocalTransform.png"; ImageAssert.assertEquals(new File(refPath), image, 3000); }
/** * Resize buffered png. * * @param image the png * @param width the width * @return the buffered png */ @Nullable public static BufferedImage maximumSize(@Nullable final BufferedImage image, int width) { if (null == image) return image; width = Math.min(image.getWidth(), width); if (width == image.getWidth()) return image; final int height = image.getHeight() * width / image.getWidth(); @javax.annotation.Nonnull final BufferedImage rerender = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); final Graphics gfx = rerender.getGraphics(); @javax.annotation.Nonnull final RenderingHints hints = new RenderingHints(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); ((Graphics2D) gfx).setRenderingHints(hints); gfx.drawImage(image, 0, 0, rerender.getWidth(), rerender.getHeight(), null); return rerender; }
Graphics2D g = res.createGraphics(); if (!StringUtil.isEmpty(str)) { Color bgcolor = StringUtil.toColor(str); g.setBackground(bgcolor); g.clearRect(0, 0, width, height); RenderingHints hints = new RenderingHints(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)); hints.add(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); hints.add(new RenderingHints(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC)); g.setRenderingHints(hints); .getRotateInstance(ang, width / 2.0, height / 2.0); at.translate(width / 2.0 - pImage.getWidth() / 2.0, height / 2.0 - pImage.getHeight() / 2.0);
@Test public void testCrossFillZoomedOut() throws Exception { String styleName = "fillCrossUom.sld"; Style style = RendererBaseTest.loadStyle(this, styleName); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // this used to blow up while building the repeatable tile used to perform the fill BufferedImage bi = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = bi.createGraphics(); renderer.paint(graphics, new Rectangle(0, 0, 10, 10), bounds); graphics.dispose(); mc.dispose(); }
import java.awt.image.*; import javax.imageio.ImageIO; import java.io.File; import java.awt.*; import java.awt.geom.*; public class Test { public static void main(String[] args) throws Exception { float r = 2; BufferedImage img = new BufferedImage((int) r*4 + 1, (int) r*4 + 1, BufferedImage.TYPE_INT_ARGB); Graphics2D g = img.createGraphics(); RenderingHints rh = new RenderingHints(null); rh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); rh.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g.addRenderingHints(rh); g.setBackground(Color.WHITE); g.clearRect(0, 0, (int) r*4 + 1, (int) r*4 + 1); g.setPaint(new RadialGradientPaint( r*2,r*2,r*2, new float[] {0.1f,0.35f}, new Color[] {Color.RED, Color.GREEN} )); g.fill(new Ellipse2D.Float(r,r,r*2 + 1,r*2 + 1)); g.dispose(); ImageIO.write(img, "png", new File("out.png")); } }
@Override public void paintComponent(Graphics g){ Dimension d = new Dimension(textBox.width + triangle.width, textBox.height); Dimension originalSize = canonicalSize; Dimension actualSize = getActualSize(); float scalex = 1f * actualSize.width / originalSize.width; float scaley = 1f * actualSize.height / originalSize.height; ((Graphics2D) g).scale(scalex, scaley); super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setFont(font); g2d.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); g2d.setColor(colorFront); g2d.fill(flagShape); // draw outline Stroke pen = new BasicStroke(1.0F); g2d.setStroke(pen); g2d.setColor(colorFrame); g2d.draw(flagShape); g2d.setColor(colorText); g2d.drawString(text, textBox.x + PADDING_X, textBox.y + textBox.height - fm.getDescent() - PADDING_Y); } }
public void paint(final Graphics g) { final Graphics2D g2d = (Graphics2D) g; g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); g2d.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.getRenderingHints().put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE); g2d.getRenderingHints().put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.getRenderingHints().put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.getRenderingHints().put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); g2d.getRenderingHints().put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); g2d.getRenderingHints().put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); final Composite alphaComp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.45f); g2d.setComposite(alphaComp); final double i = 3; final Color[] cls = new Color[] { Color.red, Color.green, Color.blue }; final Shape circle = getCircle(320, 400, 160); g2d.fill(circle); for (double j = 0; j < i; j++) { final AffineTransform at = AffineTransform.getRotateInstance(Math.toRadians(360 / i * j), 400, 400); final Shape shape = at.createTransformedShape(circle); g2d.setColor(cls[(int) j]); g2d.fill(shape); } } }
protected void drawFaceArtIntoRect(Graphics2D g, int x, int y, int w, int h, Rectangle2D artRect, boolean shouldPreserveAspect) { double fullCardImgWidth = faceArtImage.getWidth(); double fullCardImgHeight = faceArtImage.getHeight(); double artWidth = fullCardImgWidth; double artHeight = fullCardImgHeight; RenderingHints rh = new RenderingHints( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g.setRenderingHints(rh); g.drawImage(faceArtImage, x, y, (int) targetWidth, (int) targetHeight,
@Override public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D)g.create(); RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHints(rh); g2d.setColor(Color.BLACK); g2d.translate(x - shape.getBounds().x, y - shape.getBounds().y); g2d.fill(shape); g2d.dispose(); }
strokePad = thickness / 2; hints = new RenderingHints( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); area.add(new Area(pointer)); g2.setRenderingHints(hints); Area borderRegion = new Area(rect); borderRegion.subtract(area); g2.setClip(borderRegion); g2.setColor(bg); g2.fillRect(0, 0, width, height); g2.setClip(null); g2.setColor(color); g2.setStroke(stroke); g2.draw(area);
double decimationScaleX = ((1.0 * sourceArea.width) / raster.getWidth()); double decimationScaleY = ((1.0 * sourceArea.height) / raster.getHeight()); final AffineTransform decimationScaleTranform = XAffineTransform.getScaleInstance(decimationScaleX, decimationScaleY); new RenderingHints( JAI.KEY_REPLACE_INDEX_COLOR_MODEL, interpolation instanceof InterpolationNearest final Object cache = hints.get(JAI.KEY_TILE_CACHE); if (cache != null && cache instanceof TileCache) localHints.add(new RenderingHints(JAI.KEY_TILE_CACHE, (TileCache) cache)); localHints.add( new RenderingHints(JAI.KEY_TILE_SCHEDULER, (TileScheduler) scheduler)); final Object extender = hints.get(JAI.KEY_BORDER_EXTENDER); if (extender != null && extender instanceof BorderExtender) { localHints.add( new RenderingHints(JAI.KEY_BORDER_EXTENDER, (BorderExtender) extender)); addBorderExtender = false; localHints.add(ImageUtilities.BORDER_EXTENDER_HINTS); ImageWorker iw = new ImageWorker(raster); iw.setRenderingHints(localHints); iw.affine(finalRaster2Model, interpolation, noData); return iw.getRenderedImage();