当前位置:  开发笔记 > 编程语言 > 正文

开源Java库,用于生成服务器端的网页缩略图

如何解决《开源Java库,用于生成服务器端的网页缩略图》经验,为你挑选了1个好方法。

我正在寻找一个开源Java库来为给定的URL生成缩略图.我需要捆绑此功能,而不是呼叫外部服务,例如Amazon或websnapr.

http://www.webrenderer.com/在这篇文章中提到:服务器生成的网页截图,但它是一个商业解决方案.

我希望有一个基于Java的解决方案,但可能需要考虑执行一个外部进程,如khtml2png,或集成html2ps之类的东西.

有什么建议?



1> McDowell..:

首先想到的是使用AWT捕获屏幕抓取(参见下面的代码).您可以查看捕获JEdi​​torPane,JDIC WebBrowser控件或SWT 浏览器(通过AWT嵌入支持).后两者嵌入了原生浏览器(IE,Firefox),因此引入了依赖关系; JEdi​​torPane HTML支持在HTML 3.2处停止.可能这些都不适用于无头系统.

import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JLabel;

public class Capture {

    private static final int WIDTH = 128;
    private static final int HEIGHT = 128;

    private BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
            BufferedImage.TYPE_INT_RGB);

    public void capture(Component component) {
        component.setSize(image.getWidth(), image.getHeight());

        Graphics2D g = image.createGraphics();
        try {
            component.paint(g);
        } finally {
            g.dispose();
        }
    }

    private BufferedImage getScaledImage(int width, int height) {
        BufferedImage buffer = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        Graphics2D g = buffer.createGraphics();
        try {
            g.drawImage(image, 0, 0, width, height, null);
        } finally {
            g.dispose();
        }
        return buffer;
    }

    public void save(File png, int width, int height) throws IOException {
        ImageIO.write(getScaledImage(width, height), "png", png);
    }

    public static void main(String[] args) throws IOException {
        JLabel label = new JLabel();
        label.setText("Hello, World!");
        label.setOpaque(true);

        Capture cap = new Capture();
        cap.capture(label);
        cap.save(new File("foo.png"), 64, 64);
    }

}

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有