Example usage for java.awt Graphics drawImage

List of usage examples for java.awt Graphics drawImage

Introduction

In this page you can find the example usage for java.awt Graphics drawImage.

Prototype

public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);

Source Link

Document

Draws as much of the specified image as is currently available.

Usage

From source file:SWTUtils.java

/**
 * Converts an AWT image to SWT.//from ww  w  .  j  a  v  a2s  .  c  o m
 *
 * @param image  the image (<code>null</code> not permitted).
 *
 * @return Image data.
 */
public static ImageData convertAWTImageToSWT(Image image) {
    if (image == null) {
        throw new IllegalArgumentException("Null 'image' argument.");
    }
    int w = image.getWidth(null);
    int h = image.getHeight(null);
    if (w == -1 || h == -1) {
        return null;
    }
    BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    Graphics g = bi.getGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return convertToSWT(bi);
}

From source file:Main.java

private static ByteBuffer convertImageData(BufferedImage bufferedImage) {
    ByteBuffer imageBuffer;/*from  www.j  a  va  2  s  .c  o  m*/
    WritableRaster raster;
    BufferedImage texImage;

    // for a texture
    if (bufferedImage.getColorModel().hasAlpha()) {
        raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, bufferedImage.getWidth(),
                bufferedImage.getHeight(), 4, null);
        texImage = new BufferedImage(glAlphaColorModel, raster, false, new Hashtable<Object, Object>());
    } else {
        raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, bufferedImage.getWidth(),
                bufferedImage.getHeight(), 3, null);
        texImage = new BufferedImage(glColorModel, raster, false, new Hashtable<Object, Object>());
    }

    // copy the source image into the produced image
    Graphics g = texImage.getGraphics();
    g.setColor(new Color(0f, 0f, 0f, 0f));
    g.fillRect(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight());
    g.drawImage(bufferedImage, 0, 0, null);

    // build a byte buffer from the temporary image
    // that be used by OpenGL to produce a texture.
    byte[] data = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();

    imageBuffer = ByteBuffer.allocateDirect(data.length);
    imageBuffer.order(ByteOrder.nativeOrder());
    imageBuffer.put(data, 0, data.length);
    imageBuffer.flip();

    return imageBuffer;
}

From source file:com.openkm.util.ImageUtils.java

/**
 * cloneImage/*from   www .  ja va2 s. c om*/
 */
public static BufferedImage clone(BufferedImage source) {
    BufferedImage img = new BufferedImage(source.getWidth(), source.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics g = img.getGraphics();
    g.drawImage(source, 0, 0, null);
    g.dispose();
    return img;
}

From source file:com.spstudio.common.image.ImageUtils.java

public static BufferedImage zoom(BufferedImage sourceImage, int width, int height) {
    BufferedImage zoomImage = new BufferedImage(width, height, sourceImage.getType());
    Image image = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    Graphics gc = zoomImage.getGraphics();
    gc.setColor(Color.WHITE);/*  ww w . ja  v  a 2s  .com*/
    gc.drawImage(image, 0, 0, null);
    return zoomImage;
}

From source file:com.jaeksoft.searchlib.util.ImageUtils.java

public static BufferedImage toBufferedImage(Image image) throws InterruptedException {

    if (image instanceof BufferedImage)
        return (BufferedImage) image;

    image = new ImageIcon(image).getImage();
    int type = hasAlpha(image) ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB;
    BufferedImage bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
    Graphics g = bimage.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();/*from   www. j  av  a 2 s. c  o  m*/
    return bimage;
}

From source file:org.spf4j.perf.impl.chart.Charts.java

public static BufferedImage createMinMaxAvgCountImg(final String chartName, final long[] timestamps,
        final double[] min, final double[] max, final double[] total, final double[] count, final String uom,
        final int width, final int height) {

    BufferedImage bi = Charts/*w w w. ja  v  a  2 s. c om*/
            .createTimeSeriesJFreeChart(chartName, timestamps, new String[] { "min", "max", "avg" }, uom,
                    new double[][] { min, max, Arrays.divide(total, count) })
            .createBufferedImage(width, height - height / 3);
    BufferedImage bi2 = Charts.createTimeSeriesJFreeChart(null, timestamps, new String[] { "count" }, "count",
            new double[][] { count }).createBufferedImage(width, height / 3);
    BufferedImage combined = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    final Graphics graphics = combined.getGraphics();
    try {
        graphics.drawImage(bi, 0, 0, null);
        graphics.drawImage(bi2, 0, height - height / 3, null);
    } finally {
        graphics.dispose();
    }
    return combined;
}

From source file:org.spf4j.perf.impl.chart.Charts.java

public static BufferedImage generateCountTotalChart(final String groupName, final long[][] timestamps,
        final String[] measurementNames, final String uom1, final double[][] measurements, final int width,
        final int height, final String[] measurementNames2, final String uom2, final double[][] measurements2) {
    BufferedImage count = Charts//w  w w  .  j  a  v  a2  s  .  c  o  m
            .createTimeSeriesJFreeChart("Measurements for " + groupName + " generated by spf4j", timestamps,
                    measurementNames, uom1, measurements)
            .createBufferedImage(width, height / 2);
    BufferedImage total = Charts
            .createTimeSeriesJFreeChart(null, timestamps, measurementNames2, uom2, measurements2)
            .createBufferedImage(width, height / 2);
    BufferedImage combined = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    final Graphics graphics = combined.getGraphics();
    try {
        graphics.drawImage(count, 0, 0, null);
        graphics.drawImage(total, 0, height / 2, null);
    } finally {
        graphics.dispose();
    }
    return combined;
}

From source file:com.tomtom.speedtools.json.ImageSerializer.java

@Nonnull
private static BufferedImage convertToBufferedImage(@Nonnull final Image image) throws IOException {
    assert image != null;

    if (image instanceof BufferedImage) {
        return (BufferedImage) image;
    }/*from w  w w  .j a va 2s  .  c  om*/

    /**
     * Load the image in the background and wait
     * until is is downloaded.
     */
    final MediaTracker tracker = new MediaTracker(new Component() {
        // Empty.
    });
    tracker.addImage(image, 0);
    try {
        tracker.waitForAll();
    } catch (final InterruptedException e) {
        throw new IOException(e.getMessage(), e);
    }

    /**
     * Create a buffered image with the right dimensions.
     */
    final BufferedImage bufImage = new BufferedImage(image.getWidth(null), image.getHeight(null),
            BufferedImage.TYPE_INT_ARGB);

    /**
     * Draw the image in the buffer and return it as base64 data.
     */
    final Graphics g = bufImage.createGraphics();
    g.drawImage(image, 0, 0, null);
    return bufImage;
}

From source file:org.polymap.core.data.image.ImageTransparencyProcessor.java

public static BufferedImage transparency(Image image, final Color markerColor) throws IOException {
    long start = System.currentTimeMillis();

    RGBImageFilter filter = new RGBImageFilter() {
        // the color we are looking for... Alpha bits are set to opaque
        public int markerRGB = markerColor.getRGB() | 0xFF000000;

        byte threshold = 25;

        double range = ((double) 0xFF) / (3 * threshold);

        public final int filterRGB(int x, int y, int rgb) {
            Color probe = new Color(rgb);
            //log.info( "probe=" + probe + ", marker=" + markerColor );

            // delta values
            int dRed = markerColor.getRed() - probe.getRed();
            int dGreen = markerColor.getGreen() - probe.getGreen();
            int dBlue = markerColor.getBlue() - probe.getBlue();
            //log.info( "    dRed=" + dRed + ", dGreen=" + dGreen );

            if (dRed >= 0 && dRed < threshold && dGreen >= 0 && dGreen < threshold && dBlue >= 0
                    && dBlue < threshold) {
                int alpha = (int) Math.round(range * (dRed + dGreen + dBlue));
                //log.info( "    -> alpha=" + alpha );

                return ((alpha << 24) | 0x00FFFFFF) & rgb;
            } else {
                // nothing to do
                return rgb;
            }/*from  ww w .ja va 2s.  c o  m*/
        }
    };

    //        BufferedImage bimage = null;
    //        if (image instanceof BufferedImage) {
    //            bimage = (BufferedImage)image;
    //        }
    //        else {
    //            bimage = new BufferedImage(
    //                    image.getHeight( null ), image.getWidth( null ), BufferedImage.TYPE_INT_ARGB );
    //            Graphics g = bimage.getGraphics();
    //            g.drawImage( image, 0, 0, null );
    //            g.dispose();
    //        }

    ImageProducer ip = new FilteredImageSource(image.getSource(), filter);
    Image result = Toolkit.getDefaultToolkit().createImage(ip);

    BufferedImage bresult = new BufferedImage(image.getHeight(null), image.getWidth(null),
            BufferedImage.TYPE_INT_ARGB);
    Graphics g = bresult.getGraphics();
    g.drawImage(result, 0, 0, null);
    g.dispose();

    //        // XXX this can surely be done any more clever
    //        int width = bimage.getWidth();
    //        int height = bimage.getHeight();
    //        for (int x=bimage.getMinX(); x<width; x++) {
    //            for (int y=bimage.getMinY(); y<height; y++) {
    //                int filtered = filter.filterRGB( x, y, bimage.getRGB( x, y ) );
    //                result.setRGB( x, y, filtered );
    //            }
    //        }

    log.debug("Transparency done. (" + (System.currentTimeMillis() - start) + "ms)");
    return bresult;
}

From source file:com.mirth.connect.server.util.DICOMUtil.java

private static String returnOtherImageFormat(MessageObject message, String format, boolean autoThreshold) {
    // use new method for jpegs
    if (format.equalsIgnoreCase("jpg") || format.equalsIgnoreCase("jpeg")) {
        return new String(Base64.encodeBase64Chunked(dicomToJpg(1, message, autoThreshold)));
    }/*w w w  . java2  s.com*/

    byte[] rawImage = Base64.decodeBase64(getDICOMRawData(message).getBytes());
    ByteArrayInputStream bais = new ByteArrayInputStream(rawImage);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    try {
        DICOM dicom = new DICOM(bais);
        dicom.run(message.getType());
        BufferedImage image = new BufferedImage(dicom.getWidth(), dicom.getHeight(),
                BufferedImage.TYPE_INT_RGB);
        Graphics graphics = image.createGraphics();
        graphics.drawImage(dicom.getImage(), 0, 0, null);
        graphics.dispose();
        ImageIO.write(image, format, baos);
        return new String(Base64.encodeBase64Chunked(baos.toByteArray()));
    } catch (IOException e) {
        logger.error("Error Converting DICOM image", e);
    } finally {
        IOUtils.closeQuietly(bais);
        IOUtils.closeQuietly(baos);
    }

    return StringUtils.EMPTY;
}