java实现缩略图和抓屏幕
import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics2D;import java.awt.Image;import java.awt.MediaTracker;import java.awt.Rectangle;import java.awt.RenderingHints;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;/** * * 纯java API实现图片处理 * <p>Title:ImageChangeSize</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2010</p> * <p>Company: </p> * @author * @version 1.0.0 */public class ImageChangeSize{ public static void main ( String [] args ) throws InterruptedException { //测试生成缩略图 createThumbnail("c:\\555.gif", 200, 200, 100, "c:\\uuuu.jpg"); //测试捕捉屏幕,每隔一秒捕获一次 String path = "c:\\screen\"; int i = 0; for ( ;; ) { i++; String filepath = path + i + ".jpg"; snatchScreen(filepath); Thread.currentThread().sleep(2000); } } /** * 处理图片,改变起大小,可进行缩略和放大 * @param filename 源文件名称 * @param thumbWidth 处理后宽度 * @param thumbHeight 处理后高度 * @param quality 品质 最高100,最小0 * @param outFilename 输出文件名称 */ public static void createThumbnail ( String filename, int thumbWidth, int thumbHeight, int quality, String outFilename ) { Image image = Toolkit.getDefaultToolkit().getImage(filename); MediaTracker mediaTracker = new MediaTracker(new Container()); mediaTracker.addImage(image, 0); try { mediaTracker.waitForID(0); double thumbRatio = (double) thumbWidth / (double) thumbHeight; int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); double imageRatio = (double) imageWidth / (double) imageHeight; if ( thumbRatio < imageRatio ) { thumbHeight = (int) ( thumbWidth / imageRatio ); } else { thumbWidth = (int) ( thumbHeight * imageRatio ); } BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = thumbImage.createGraphics(); graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename)); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage); quality = Math.max(0, Math.min(quality, 100)); param.setQuality((float) quality / 100.0f, false); encoder.setJPEGEncodeParam(param); encoder.encode(thumbImage); out.close(); } catch ( Exception e ) { e.printStackTrace(); } } /** * 抓取电脑屏幕 * @param path */ public static void snatchScreen ( String path ) { Robot robot; try { robot = new Robot(); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); Rectangle rect = new Rectangle(0, 0, d.width, d.height); BufferedImage image = robot.createScreenCapture(rect); ImageIO.write(image, "jpg", new File(path)); } catch ( Exception e ) { System.out.println("Failed to snatch screen ... "); e.printStackTrace(); } }}