Java Image renderComponentToImage(JComponent component)

Here you can find the source of renderComponentToImage(JComponent component)

Description

Renders a component into an image, which is useful for playing with the component's resultant image in special effects or transitions

License

Apache License

Parameter

Parameter Description
component The component to render

Return

A buffered image with the rendered component.

Declaration

public static BufferedImage renderComponentToImage(JComponent component) 

Method Source Code

//package com.java2s;
/*/*w  w  w.  j ava  2 s.com*/
 * ImageUtilities.java
 *
 * Created on March 16, 2007, 4:34 PM
 *
 * Copyright 2006-2007 Nigel Hughes
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at http://www.apache.org/
 * licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

import javax.swing.JComponent;

import java.awt.Graphics;

import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;

import java.awt.Transparency;

import java.awt.image.BufferedImage;

public class Main {
    /**
     * Renders a component into an image, which is useful for playing with the component's
     * resultant image in special effects or transitions
     *
     * @param component The component to render
     * @return A buffered image with the rendered component.
     */
    public static BufferedImage renderComponentToImage(JComponent component) {
        //Create the image
        BufferedImage image = createCompatibleImage(component.getWidth(),
                component.getHeight());

        //Render the component onto the image
        Graphics graphics = image.createGraphics();
        component.paint(graphics);
        graphics.dispose();
        return image;
    }

    /**
     * Creates an image compatible with the current display
     *
     * @return A BufferedImage with the appropriate color model
     */
    public static BufferedImage createCompatibleImage(int width, int height) {
        GraphicsConfiguration configuration = GraphicsEnvironment
                .getLocalGraphicsEnvironment().getDefaultScreenDevice()
                .getDefaultConfiguration();

        //Create a buffered image which is the right (translucent) format for the current graphics device, this
        //should ensure the fastest possible performance. Adding on some extra height to make room for the reflection
        return configuration.createCompatibleImage(width, height,
                Transparency.TRANSLUCENT);
    }
}

Related

  1. openImageFileChooser(Component com)
  2. paintToImage(Component comp)
  3. prepareImagePath(String html, URL url)
  4. removeImage(JLabel image)
  5. removeRedeye(Image im, final int x1, final int y1, final int x2, final int y2)
  6. save(Image image, File file, String formatName)
  7. saveComponentAsImage(final String path, final Component target, final String format)
  8. SaveImageToFile(Image img, String filename, String outformat)
  9. scaleBarcodeMaxWidth(Image i, int width, int cropHeigth)