JAVA实现网页快照,存为图片格式
2016-11-28 16:19
381 查看
原文:http://blog.csdn.net/java2000_net/article/details/3643528
截取的google的效果,将就吧,不是特别好。 但是作为普通的应用,我想这个效果我已经很满意了。
注意,里面的
this.setVisible(true);
这句话如果运行在一些不能显示图形界面的机器上,请屏蔽掉它,不过这样的话,网页里的图片就不能被截取了。
效果图:
完整的源代码如下:
截取的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实现网页快照,存为图片格式
- JAVA实现网页快照,存为图片格式
- JAVA实现网页快照,存为图片格式
- JAVA实现网页快照,存为图片格式
- JAVA实现网页快照,存为图片格式
- JAVA实现网页快照,存为图片格式
- (Java实现)HTML转JPG,TIFF等图片格式和TIFF图片合并功能解决方案。
- Java实现把cmyk格式图片转换为RGB格式图片
- java 调用jacob和java2word导出word,并实现将带有格式的html文本和图片插入word
- JAVA将Excel中的报表导出为图片格式(三)换一种实现
- JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
- Java 转换png jpg gif格式图片的相互转换的实现
- JAVA将Excel中的报表导出为图片格式(二)实现思路
- JAVA 实现jpg/tif/bmp 等图片格式互相转换,解决RenderedOp资源不能释放
- JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
- 使用JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
- 使用Java实现在SQLserver中实现图片的存储
- BCB实现BMP图片的RGB分解,BMP与JPG格式的相互转换
- 基于java的图片文件格式转换和线性缩放