当前位置: 首页 > 面试题库 >

开源Java库在服务器端生成网页缩略图

巫英纵
2023-03-14
问题内容

我正在搜索一个开放源Java库,以生成给定URL的缩略图。我需要捆绑此功能,而不是调用外部服务,例如Amazon或websnapr。

这篇文章中提到了http://www.webrenderer.com/:服务器生成的网络屏幕截图,但这是一种商业解决方案。

我希望有一个基于Java的解决方案,但可能需要研究执行外部过程(例如khtml2png)或集成类似html2ps的东西。

有什么建议?


问题答案:

首先想到的是使用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);
    }

}


 类似资料:
  • 目前我正在开发Jax Rs应用程序,我想将Base64编码的图像输出到客户端。客户端是一个移动设备。 移动设备将使用一些参数调用该服务,服务器必须绘制一个条形图,并将其作为base64编码的图像字符串发送回设备。 由于java Fx具有所需的图表库,因此我使用以下教程做了一个示例。“快照”功能也按预期正常工作(创建屏幕图像)。 http://docs.oracle.com/javafx/2/cha

  • 问题内容: 我需要一个服务器端脚本(PHP,Python)来将网页捕获为PNG,JPG,Tiff,GIF图像并将它们调整为缩略图。 做到这一点的最佳方法是什么? 问题答案: 您可能可以编写类似于webkit2png的内容,除非您的服务器已经运行Mac OSX。 更新: 我刚刚看到了其等效于Linux的链接:khtml2png

  • 静态网页生成器工具 JS 网页生成器: Metalsmith harp JS 博客网站生成器: hubpress.io Hexo.io 网站生成器列表: staticsitegenerators.net www.staticgen.com

  • 静态网页生成器 静态网页生成器, 是使用服务器端代码编写(如: ruby, php, python, nodeJS 等...), 用静态文本数据 + 模板, 生成从服务器发送到客户端的静态 HTML 文件. 综合学习: 静态网页生成器 [read]

  • 问题内容: 这听起来可能很奇怪,但是我想使用JavaFX在服务器端生成我的图表图像。因为JavaFX具有很好的canvas API来执行图像转换连接和定位。 特别是我有一个Spring MVC服务,可以将我的图表生成为图像。主要问题是如何从方便的Spring bean调用javaFX API。如果我尝试从Java应用程序运行Javafx代码(不扩展javaFX Application类),我会得到

  • 我以前从未使用过ffmpeg,但它看起来相当直接。我已经有一个脚本来处理上传的文件并将所有相关数据存储到数据库中,但是我不能生成缩略图。我也没有出错,我甚至检查了服务器上的error_log,什么都没有。我尝试使用的命令是: 我会改变静态文件名的变量,一旦我得到它的工作,因为视频将被缩略图上传通过一个表单。 我尝试使用这个页面的解决方案: ffmpeg从视频中获取图像或缩略图错误 但是我没有任何运