1 14 package org.compiere.apps; 15 16 import java.io.*; 17 import java.awt.*; 18 import java.awt.image.*; 19 import java.util.*; 20 import javax.swing.*; 21 import javax.imageio.*; 22 import javax.imageio.stream.*; 23 24 import com.sun.image.codec.jpeg.*; 25 import org.compiere.util.*; 26 27 33 public class ScreenShot 34 { 35 41 public static boolean createJPEG (Window window, String fileName) 42 { 43 if (window == null || fileName == null) 44 new IllegalArgumentException ("ScreenShot.createJPEG Window os NULL"); 45 46 File file = getJPGFile (window); 48 if (file == null) 49 return false; 50 Log.trace(Log.l3_Util, "ScreenShot.createJPEG", "File=" + file); 51 if (file.exists()) 52 file.delete(); 53 54 Iterator writers = ImageIO.getImageWritersByFormatName("jpg"); 56 ImageWriter writer = (ImageWriter)writers.next(); 57 if (writer == null) 58 { 59 Log.error("ScreenShot.createJPEG - no ImageWriter"); 60 return false; 61 } 62 63 BufferedImage bi = getImage(window); 65 66 try 68 { 69 ImageOutputStream ios = ImageIO.createImageOutputStream (file); 70 writer.setOutput(ios); 71 writer.write(bi); 72 ios.flush(); 73 ios.close(); 74 75 } 76 catch (IOException ex) 77 { 78 Log.error("ScreenShot.createJPEG", ex); 79 return false; 80 } 81 return true; 82 } 84 85 90 protected static File getJPGFile (Component parent) 91 { 92 JFileChooser fc = new JFileChooser(); 93 fc.addChoosableFileFilter(new ExtensionFileFilter("jpg", "JPEG")); 94 if (fc.showSaveDialog(parent) != JFileChooser.APPROVE_OPTION) 95 return null; 96 File file = fc.getSelectedFile(); 97 if (file == null) 98 return null; 99 String fileName = file.getAbsolutePath(); 100 if (!(fileName.toUpperCase().equals(".JPG") || fileName.toUpperCase().equals(".JPEG"))) 101 fileName += ".jpg"; 102 return new File (fileName); 103 } 105 110 protected static BufferedImage getImage (Window window) 111 { 112 BufferedImage bi = new BufferedImage (window.getWidth(), window.getHeight(), 113 BufferedImage.TYPE_INT_RGB); window.paintAll(bi.createGraphics()); 115 return bi; 116 } 118 } | Popular Tags |