请教:能否让一个网页变成一张图片呢?
今天突发奇想,可不可以让一个网页转成一张图片呢?就像系统的printscreen键一样效果? 找到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;
}
}
哦~虽然不是我需要的,但感谢!:face (12): 在世界之窗浏览器里有个功能:文件--保存为图片。 哦,谢谢~有可能autoit做不到这个。我以为它万能face (33): 一种可能的基本方法:
#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 哦领教了,autoit真不错,这个也能实现~厉害,谢谢~ 一种可能的基本方法:
#include
#include
#include
_Main(@DesktopWidth,@DesktopHeight,"www.go ...
smartzbs 发表于 2009-12-27 17:06 http://www.autoitx.com/images/common/back.gif
您的AU3是那个版本?我的3.3.1.6怎么没截取出来? 所以说啊!“只有想不到,没有办不到” 您的AU3是那个版本?我的3.3.1.6怎么没截取出来?
顽固不化 发表于 2009-12-28 22:03 http://www.autoitx.com/images/common/back.gif
又试了一次,没有任何问题,截图OK的。
我的版本比你的低3.3.0.0 本帖最后由 顽固不化 于 2009-12-29 01:12 编辑
又试了一次,没有任何问题,截图OK的。
我的版本比你的低3.3.0.0
smartzbs 发表于 2009-12-29 00:21 http://www.autoitx.com/images/common/back.gif
看错了保存目录了。3320也能用此代码截图的。 6#不错,谢谢分享 截图功能好弄,但能像那些成熟的截图软件那样,可以滚屏截图就不好弄了吧。。尤其是网页这样的,很容易碰上有滚动条的。。
顽固,也学JAVA得哈,呵呵
页:
[1]