Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Image offline rendering

import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.InputStream; import javax.swing.JFrame; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageDecoder; public class ImageDuplicity extends Component {   private BufferedImage image;   public void paint(Graphics g) {     Graphics2D g2 = (Graphics2D) g;     if (image == null)       createOffscreenImage();     g2.drawImage(image, 0, 0, this);   }   private void createOffscreenImage() {     Dimension d = getSize();     int width = d.width;      int height = d.height;     image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);     Graphics2D g2 = image.createGraphics();     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,         RenderingHints.VALUE_ANTIALIAS_ON);     try {       String filename = "largerntsoftLogo.jpg";       InputStream in = getClass().getResourceAsStream(filename);       JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);       BufferedImage image = decoder.decodeAsBufferedImage();       in.close();       g2.drawImage(image, 0, 0, width, height, null);     } catch (Exception e) {       System.out.print(e);     }     g2.setStroke(new BasicStroke(2));     Color[] colors = { Color.red, Color.blue, Color.green };     for (int i = -32; i < 40; i += 8) {       g2.setPaint(colors[Math.abs(i) % 3]);       g2.drawOval(i, i, width - i * 2, height - i * 2);     }   }   public static void main(String[] args) {     JFrame f = new JFrame();     f.setLayout(new BorderLayout());     Component c = new ImageDuplicity();     f.add(c, BorderLayout.CENTER);     f.setSize(200, 250);     f.setVisible(true);   } }