找回密码
 加入
搜索
查看: 3305|回复: 12

请教:能否让一个网页变成一张图片呢?

 火.. [复制链接]
发表于 2009-12-26 11:03:06 | 显示全部楼层 |阅读模式
今天突发奇想,可不可以让一个网页转成一张图片呢?就像系统的printscreen键一样效果?
发表于 2009-12-26 11:59:22 | 显示全部楼层
找到Java代码,但是不会转换到AU3。
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页面转图片的实现方法。  
*/  
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);   
    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, 450, 600);   
    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;   
}   
}  
 楼主| 发表于 2009-12-26 13:38:05 | 显示全部楼层
哦~虽然不是我需要的,但感谢!
发表于 2009-12-26 18:17:41 | 显示全部楼层
在世界之窗浏览器里有个功能:文件--保存为图片。
 楼主| 发表于 2009-12-27 12:55:44 | 显示全部楼层
哦,谢谢~有可能autoit做不到这个。我以为它万能face (33):
发表于 2009-12-27 17:06:14 | 显示全部楼层
一种可能的基本方法:

#include <ScreenCapture.au3>
#include <ie.au3>
#include <WindowsConstants.au3>

_Main(@DesktopWidth,@DesktopHeight,"www.google.cn")

Func _Main($i_w,$i_h,$url)
        Local $hGUI, $oIE

        ; Create GUI
        $hGUI = GUICreate("Screen Capture", $i_w, $i_h,0,0,$WS_POPUP)
        $oIE = _IECreateEmbedded()
        $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, $i_W, $i_h)
        _IENavigate($oIE,$url)
        GUISetState()
        ; Capture window
        _ScreenCapture_CaptureWnd (@MyDocumentsDir & "\GDIPlus_Image.jpg", $hGUI)
EndFunc   ;==>_Main
 楼主| 发表于 2009-12-28 16:13:12 | 显示全部楼层
哦领教了,autoit真不错,这个也能实现~厉害,谢谢~
发表于 2009-12-28 22:03:00 | 显示全部楼层
一种可能的基本方法:

#include
#include
#include

_Main(@DesktopWidth,@DesktopHeight,"www.go ...
smartzbs 发表于 2009-12-27 17:06



    您的AU3是那个版本?我的3.3.1.6怎么没截取出来?
发表于 2009-12-28 22:05:57 | 显示全部楼层
所以说啊!“只有想不到,没有办不到”
发表于 2009-12-29 00:21:57 | 显示全部楼层
您的AU3是那个版本?我的3.3.1.6怎么没截取出来?
顽固不化 发表于 2009-12-28 22:03

又试了一次,没有任何问题,截图OK的。
我的版本比你的低3.3.0.0
发表于 2009-12-29 00:31:13 | 显示全部楼层
本帖最后由 顽固不化 于 2009-12-29 01:12 编辑
又试了一次,没有任何问题,截图OK的。
我的版本比你的低3.3.0.0
smartzbs 发表于 2009-12-29 00:21



    看错了保存目录了。3320也能用此代码截图的。
发表于 2010-1-1 20:04:52 | 显示全部楼层
6#不错,谢谢分享
发表于 2010-1-1 22:45:03 | 显示全部楼层
截图功能好弄,但能像那些成熟的截图软件那样,可以滚屏截图就不好弄了吧。。尤其是网页这样的,很容易碰上有滚动条的。。
顽固,也学JAVA得哈,呵呵
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-23 11:00 , Processed in 0.088739 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表