/* * @(#)JPEGJ2d.java 1.0 02/12/03 * */ import java.awt.*; import java.awt.event.*; import com.sun.image.codec.jpeg.*; import java.awt.image.BufferedImage; import java.awt.image.DataBuffer; import java.awt.geom.*; import java.io.*; import javax.swing.*; public class JPEGJ2d extends JApplet { private static Image img; public void init() { setBackground(Color.white); img = getToolkit().getImage(JPEGJ2d.class.getResource("duke.jpg")); try { MediaTracker tracker = new MediaTracker(this); tracker.addImage(img, 0); tracker.waitForID(0); } catch (Exception e) {} } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; Dimension d = getSize(); g2.setBackground(getBackground()); g2.clearRect(0, 0, d.width, d.height); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); int w = d.width; int h = d.height; BufferedImage bi = (BufferedImage) createImage(w, h); Graphics2D big = bi.createGraphics(); big.drawImage(img, 0, 0, null); big.setFont(new Font("Dialog", Font.PLAIN, 10)); big.setColor(Color.black); big.drawString("BufferedImage", 4, 12); //To rotate the image, comment the following line //g2.drawImage(bi, 0, 0, this); //comment including g2.drawimage() if you dont want to rotate double x = 0.5*w; double y = 0.5*h; AffineTransform at = new AffineTransform(); at.rotate(Math.toRadians(90),x,y); g2.transform(at); g2.drawImage(bi, 0, 0, null); try { File file = new File("images", "test.jpg"); FileOutputStream out = new FileOutputStream(file); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi); param.setQuality(1.0f, false); encoder.setJPEGEncodeParam(param); encoder.encode(bi); // ImageIO.write(bi, "jpeg", out); out.close(); } catch (Exception ex) { g2.setColor(Color.red); g2.drawString("write permissions on images/test.jpg?", 5, h*2-5); } g2.dispose(); } public static void main(String argv[]) { final JPEGJ2d demo = new JPEGJ2d(); demo.init(); JFrame f = new JFrame("Java 2D(TM) Demo - JPEGJ2d"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); f.getContentPane().add("Center", demo); f.pack(); f.setSize(new Dimension(400,300)); f.show(); } }