`
li_sir
  • 浏览: 115423 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现缩略图和抓屏幕

    博客分类:
  • 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();

            }

      }

}
分享到:
评论

相关推荐

    java 图片生成缩略图

    Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 Java 中,生成缩略图可以...

    java生成缩略图类(已经封装好)

    java 生成缩略图类 源代码 (已经封装好)

    java 上传图片生成缩略图

    本文介绍了使用Java实现上传图片并生成缩略图的方法,包括获取文件路径、读取图像、创建缩略图及保存缩略图等步骤。通过这种方式,可以在不损失原图质量的前提下,有效地减少加载时间,提升用户体验。此外,本文还...

    java 缩略图实现

    总的来说,Java提供了一套强大的图像处理工具,可以方便地实现缩略图的生成。理解并熟练运用这些APIs,不仅可以帮助开发者在项目中创建高效的图像处理功能,还能为用户带来更好的体验。在实际应用中,还可以结合其他...

    java实现缩略图

    缩略图类(通用) 本java类能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换。

    JAVA获取视频缩略图

    首先,Java本身并不直接支持从视频文件中提取缩略图,但可以通过第三方库如JMF(Java Media Framework)或FFmpeg来实现。不过,JMF已经较为过时,目前更推荐使用FFmpeg库,它是一个强大的多媒体处理工具,提供了跨...

    java生成缩略图

    根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 ...以上是对“Java生成缩略图”这一主题的详细解析和技术实现,希望对理解和应用相关技术有所帮助。

    Java实现图片等比例缩略图

    本篇文章将深入探讨如何使用Java实现图片的等比例缩略图,并提供相关代码示例。 首先,我们需要了解等比例缩略图的概念。等比例缩略图是指在保持原图宽高比的基础上,根据指定的最大尺寸进行缩小或放大。这样可以...

    动态缩略图实现方案

    在Java中实现动态缩略图涉及到图像处理和流媒体技术。下面我们将深入探讨这个话题。 首先,Java提供了丰富的API来处理图像,如Java Advanced Imaging (JAI)库和Java 2D API。在Java 2D API中,`java.awt.image`和`...

    java缩略图jar包

    总的来说,“java缩略图jar包”(thumbnailator)是Java开发中创建和管理缩略图的高效工具,它的强大功能和简洁API降低了图像处理的门槛,使得开发者能够更加专注于业务逻辑,而不用过多关心底层的图像处理细节。...

    java实现将图片和缩略图存储到数据库中.pdf

    ### Java 实现将图片和缩略图存储到数据库中的详细解析 #### 一、知识点概述 本文档主要介绍如何使用Java编程语言实现将图片及其对应的缩略图存储到数据库中的功能。这一技术在多种场景下都非常有用,比如在线商城...

    java利用ffmpeg获取视频缩略图

    5. **优化和扩展**:虽然这个项目提供了一个基本的实现,但实际应用中可能需要更复杂的逻辑,如动态设置时间点、提取多张缩略图、调整缩略图大小等。这些可以通过修改命令参数或增加额外的代码来实现。 这个项目...

    java缩略图代码

    这个 Java 类实现了基本的图片处理功能,包括网络图片的下载、屏幕截图和生成缩略图。实际开发中,可能还需要考虑异常处理、多线程下载、图片格式转换等更多复杂情况。此外,由于 Sun Microsystems 的 `com.sun` 包...

    java上传图片,处理图片,word转pdf图片缩略图生成

    java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类

    Java 制作缩略图

    NULL 博文链接:https://wenkaixuan.iteye.com/blog/785823

    QGis+qt实现缩略图工程源码,没有运行环境,需自己配置运行环境

    QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码QGis+qt实现缩略图工程源码...

    java缩略图

    一个不错的工具类,上传的图片根据长宽的判断,按比例缩放生成另一张小图,可以减少浏览的浪费

    java图片裁剪和java生成缩略图.pdf

    java图片裁剪和java生成缩略图.pdf

    java生成图片缩略图和二进制文件的工具类

    将图片生成缩略图和转换为二进制的工具类,缩略图大小可调

Global site tag (gtag.js) - Google Analytics