今天是:
首 页电子商务研究报告PR查询域名WHOIS查询CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
首页 操作系统 工具软件 网络应用 办公应用 软件开发 数据库 平面设计 网站运营
  当前位置:首 页 >> 软件开发 >> java教程 >> JAVA实现网页快照,存为图片格式

JAVA实现网页快照,存为图片格式

  发布于2010-11-04 14:48 来源:网海拾贝

截取的google的效果,将就吧,不是特别好。 但是作为普通的应用,我想这个效果我已经很满意了。
注意,里面的
this.setVisible(true);
这句话如果运行在一些不能显示图形界面的机器上,请屏蔽掉它,不过这样的话,网页里的图片就不能被截取了。


效果图:



完整的源代码如下:

import java.awt.Graphics2D; 
import java.awt.RenderingHints; 
import java.awt.geom.AffineTransform; 
import java.awt.image.BufferedImage; 
import java.awt.image.ColorModel; 
import java.awt.image.WritableRaster; 
import java.io.*; 
import javax.imageio.*; 
import javax.swing.*; 
/** 
 * HTML2JPG,HTML页面转图片的实现方法。 
 *  
 * @author 老紫竹(Java世纪网,java2000.net) 
 */ 
public class Test extends JFrame { 
  public Test(String url, File file) throws Exception { 
    JEditorPane editorPane = new JEditorPane(); 
    editorPane.setEditable(false); 
    editorPane.setPage(url); 
    JScrollPane jsp = new JScrollPane(editorPane); 
    getContentPane().add(jsp); 
    this.setLocation(0, 0); 
    this.setVisible(true); // 如果这里不设置可见,则里面的图片等无法截取 
     
    // 如果不延时,则图片等可能没有时间下载显示 
    // 具体的秒数需要根据网速等调整 
    Thread.sleep(5 * 1000); 
    setSize(10000, 10000); 
    pack(); 
    // BufferedImage image = new BufferedImage(editorPane.getWidth(), 
    // editorPane.getHeight(), BufferedImage.TYPE_INT_RGB); 
    BufferedImage image = new BufferedImage(editorPane.getWidth(), editorPane.getHeight(), 
        BufferedImage.TYPE_INT_RGB); 
    Graphics2D graphics2D = image.createGraphics(); 
    editorPane.paint(graphics2D); 
     
    BufferedImage image1 = resize(image, 600, 400); 
    ImageIO.write(image1, "jpg", file); 
    dispose(); 
  } 
  public static void main(String[] args) throws Exception { 
    new Test("http://www.google.cn", new File("d:/file.jpg")); 
  } 
  public static BufferedImage resize(BufferedImage source, int targetW, int targetH) { 
    // targetW,targetH分别表示目标长和宽 
    int type = source.getType(); 
    BufferedImage target = null; 
    double sx = (double) targetW / source.getWidth(); 
    double sy = (double) targetH / source.getHeight(); 
    // 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放 
    // 则将下面的if else语句注释即可 
    if (sx > sy) { 
      sx = sy; 
      targetW = (int) (sx * source.getWidth()); 
      // } else { 
      // sy = sx; 
      // targetH = (int) (sy * source.getHeight()); 
    } 
    if (type == BufferedImage.TYPE_CUSTOM) { // handmade 
      ColorModel cm = source.getColorModel(); 
      WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH); 
      boolean alphaPremultiplied = cm.isAlphaPremultiplied(); 
      target = new BufferedImage(cm, raster, alphaPremultiplied, null); 
    } else 
      target = new BufferedImage(targetW, targetH, type); 
    Graphics2D g = target.createGraphics(); 
    // smoother than exlax: 
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
    g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); 
    g.dispose(); 
    return target; 
  } 
}


中查找“JAVA实现网页快照,存为图片格式”更多相关内容

中查找“JAVA实现网页快照,存为图片格式”更多相关内容



上一篇:实例说明如何集成Spring和Struts
下一篇:无相关文章
最近更新 赞助商
·JAVA实现网页快照,存为图片格式11-04
·实例说明如何集成Spring和Struts03-26
·详解Java多线程开发中的数据同步03-25
·Java多线程初学者指南(7):向线程传递..03-18
·J2ME中实现多线程技术总结03-18
·Java进阶:Java编写通过代理访问的应用程序03-16
·Java进行并发多连接socket编程03-16
·Struts核心标签03-16
·Java多线程初学者指南(6):慎重使用vol..03-16
·Java操作Microsoft Word之jacob03-16
·JAVA里面方法调用时传对象参数的陷阱03-16
热门排行 最新推荐
·什么是线程,如何创建线程
·java读取纯真IP数据库QQwry.dat的源..
·什么是同步,如何在多线程间保持同步
·分享版:JBOSS 工作流与JBPM开发实例..
·Java多线程初学者指南(7):向线程..
·如何结合使用EJB 3和Ajax
·JavaMail API完全理解
·Eclipse RCP技术简介
· 如何合理地调度多线程程序,常用的..
·Java学习从入门到精通
·如何结合使用EJB 3和Ajax
·关于Java23种设计模式的有趣见解

共有评论 0 条 网友评分 0分 查看所有评论


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[京ICP备11020891号-2 公安备案:110105007363]. All Rights Reserved .