Biblioteca de código abierto de Java para producir miniaturas de páginas web del lado del servidor [cerrado]

StackOverflow https://stackoverflow.com/questions/169573

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy buscando una biblioteca Java de código abierto para generar miniaturas de una URL determinada. Necesito agrupar esta capacidad, en lugar de llamar a servicios externos, como Amazon o websnapr .

http://www.webrenderer.com/ se mencionó en esta publicación: Imágenes generadas por el servidor , pero es una solución comercial.

Espero una solución basada en Java, pero es posible que deba ejecutar un proceso externo como khtml2png , o integrando algo como html2ps .

¿Alguna sugerencia?

¿Fue útil?

Solución

Lo primero que me viene a la mente es usar AWT para capturar una captura de pantalla (ver el código a continuación). Puede ver cómo capturar el JEditorPane , el JDIC WebBrowser o el control SWT Browser (a través de AWT incrustación de soporte ). Los dos últimos incorporan navegadores nativos (IE, Firefox), así que introduzca las dependencias; el soporte HTML de JEditorPane se detuvo en HTML 3.2. Puede ser que ninguno de estos funcione en un sistema sin cabeza.

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);
    }

}

Otros consejos

Básicamente estás pidiendo un motor de renderizado completo accesible por Java. Personalmente, me ahorraría la molestia y llamaría a un proceso secundario.

De lo contrario, me encontré con este navegador Java puro: Lobo

no existía un sitio web / servicio de control de calidad / prueba que le permitiera especificar una página web que desea que se represente en un navegador determinado (IE, FIREFOX, SAFARI versión x, y, z) y enviarían el correo instantánea de vuelta a usted. '

No puedo recordar el servicio. ¿Quizás otros desarrolladores que frecuentan ajaxian lo recuerden?

Intente llamar a ImageMagick . Sé que no es una solución Java, pero puedes llamarlo desde Java, e incluso hay un front-end de Java , aunque he tenido menos éxito con eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top