웹 페이지 썸네일 서버 측을 생성하는 오픈 소스 Java 라이브러리 [폐쇄

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

  •  05-07-2019
  •  | 
  •  

문제

주어진 URL에 대한 축소판을 생성하기 위해 오픈 소스 Java 라이브러리를 찾고 있습니다. 다음과 같은 외부 서비스를 요구하는 대신이 기능을 묶어야합니다. 아마존 또는 WEBSNAPR.

http://www.webrenderer.com/ 이 게시물에서 언급되었습니다. 서버 생성 웹 스크린 샷, 그러나 그것은 상업적인 솔루션입니다.

Java 기반 솔루션을 기대하고 있지만 다음과 같은 외부 프로세스를 실행해야 할 수도 있습니다. Khtml2png, 또는 같은 것을 통합합니다 html2ps.

제안이 있습니까?

도움이 되었습니까?

해결책

가장 먼저 떠오르는 것은 AWT를 사용하여 화면을 캡처하는 것입니다 (아래 코드 참조). 당신은 캡처를 볼 수 있습니다 Jeditorpane,, JDIC 웹 브라우저 제어 또는 SWT 브라우저 ( AWT 임베딩 지원). 후자의 두 가지는 기본 브라우저 (즉, Firefox)를 포함하므로 종속성을 도입합니다. Jeditorpane 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);
    }

}

다른 팁

본질적으로 Java가 액세스 할 수있는 완전한 렌더링 엔진을 요구합니다. 개인적으로, 나는 번거 로움을 저장하고 어린이 과정을 불러 일으킬 것입니다.

그렇지 않으면, 나는이 순수한 Java 브라우저를 만났다. 로보

특정 브라우저 (예 : Firefox, Safari 버전 X, Y, Z)에서 렌더링하려는 웹 페이지를 지정할 수있는 QA/Test 웹 사이트/서비스가 없었으며 스냅 샷을 다시 우송합니다. 너. '

이 서비스를 기억할 수 없습니다. 아마도 Ajaxian을 자주 기억하는 다른 개발자는 그것을 기억할 수 있습니까?

전화 해보세요 Imagemagick. 나는 그것이 Java 솔루션이 아니라는 것을 알고 있지만 Java에서 호출 할 수 있습니다. 자바 프론트 엔드, 나는 그것으로 성공할 수 있었지만.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top