知识大全 java实现缩略图和抓屏幕

Posted

篇首语:没有失败,只有暂时停止成功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java实现缩略图和抓屏幕相关的知识,希望对你有一定的参考价值。

  import java awt Container;

  import java awt Dimension;

  import java awt Graphics D;

  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 dec jpeg JPEGCodec;

  import dec jpeg JPEGEncodeParam;

  import dec jpeg JPEGImageEncoder;

  /**

  *

  * 纯java API实现图片处理

  * <p>Title:ImageChangeSize</p>

  * <p>Description: </p>

  * <p>Copyright: Copyright (c) </p>

  * <p>Company: </p>

  * @author

  * @version

  */

  public class ImageChangeSize

  

  public static void main ( String [] args )

  throws InterruptedException

  

  //测试生成缩略图

  createThumbnail( c:\\\\ gif c:\\\\uuuu jpg );

  //测试捕捉屏幕 每隔一秒捕获一次

  String path = c:\\\\screen\\\\ ;

  int i = ;

  for ( ;; )

  

  i++;

  String filepath = path + i + jpg ;

  snatchScreen(filepath);

  Thread currentThread() sleep( );

  

  

  /**

  * 处理图片 改变起大小 可进行缩略和放大

  * @param filename 源文件名称

  * @param thumbWidth  处理后宽度

  * @param thumbHeight 处理后高度

  * @param quality     品质 最高 最小

  * @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 );

  try

  

  mediaTracker waitForID( );

  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);

  Graphics D graphics D = thumbImage createGraphics();

  graphics D setRenderingHint(RenderingHints KEY_INTERPOLATION RenderingHints VALUE_INTERPOLATION_BILINEAR);

  graphics D drawImage(image thumbWidth thumbHeight null);

  BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));

  JPEGImageEncoder encoder = JPEGCodec createJPEGEncoder(out);

  JPEGEncodeParam param = encoder getDefaultJPEGEncodeParam(thumbImage);

  quality = Math max( Math min(quality ));

  param setQuality((float) quality / f 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( 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();

  

  

cha138/Article/program/Java/hx/201311/26013

相关参考