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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值