java获取网络图片、java截屏、java创建缩略图

 

java获取网络图片、java截屏、java创建缩略图 

 

package getPictureFromNet;

 

/**

  * java 截屏 , 获得网络图片,创建图片缩略图

  */

import java.net.URL;

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.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.OutputStream;

import java.io.FileOutputStream;

import java.io.File;

 

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;

 

public class GetPicture {

    public GetPicture() {

    }

 

    public static void main(String[] args) {

       // snatchPicture("http://img5.pcpop.com/ProductImages/Original/0/588/000588468.jpg",

       // "C://7755p2c");

       // 截取当前屏幕保存为 c 盘根目录下的 screen.jpg 图片

       snatchScreen ( "c://screen.jpg" );

       // 根据 c 盘根目录下的 screen.jpg 图片,创建一个宽 128 ,高 102 的缩略图 screenSmall.jpg 并保存在 c 盘根目录下面

       createThumbnail ( "c://screen.jpg" , 128, 102, 10, "c://screenSmall.jpg" );

       System. out .println( "successful" );

    }

 

    /**

      * 抓取当前屏幕 create date:2008- 7- 28 author:Administrator

      *

      * @param path

      * @throws Exception

      */

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

       }

 

    }

 

    /**

      * java 创建图片的缩略图 create date:2009- 5- 27 author:Administrator

      *

      * @param filename

      *             源图片

      * @param thumbWidth

      *             缩略图宽

      * @param thumbHeight

      *             缩略图高

      * @param quality

      *             图片像素

      * @param outFilename

      *             缩略图文件名

      *

      */

    private static void createThumbnail(String filename, int thumbWidth,

           int thumbHeight, int quality, String outFilename) {

 

       // load image from filename

       Image image = Toolkit.getDefaultToolkit ().getImage(filename);

       MediaTracker mediaTracker = new MediaTracker( new Container());

       mediaTracker.addImage(image, 0);

       try {

           mediaTracker.waitForID(0);

           // use this to test for errors at this point:

           // System.out.println(mediaTracker.isErrorAny());

           // determine thumbnail size from WIDTH and HEIGHT

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

           }

           // draw original image to thumbnail image object and

           // scale it to the new size on-the-fly

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

           // save thumbnail image to outFilename

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

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

 

    }

 

    /**

      * 实现从网站下载图片 create date:2008- 7- 28 author:Administrator

      *

      * @param urlPath

      * @param picPathName

      */

    public static void snatchPicture(String urlPath, String picPathName) {

       try {

           URL url = new URL(urlPath);

           BufferedInputStream bis = new BufferedInputStream(url.openStream());

           byte [] bytes = new byte [2048];

           OutputStream bos = new FileOutputStream( new File(picPathName));

           int len;

           while ((len = bis.read(bytes)) > 0) {

              bos.write(bytes, 0, len);

           }

 

           bis.close();

           bos.flush();

           bos.close();

       } catch (Exception e) {

           System. out .println( " 抓取图片失败 ... " );

           e.printStackTrace();

       }

    }

 

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值