مكتبة Java مفتوحة المصدر لإنتاج صور مصغرة لصفحات الويب من جانب الخادم [مغلق]

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

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أبحث عن مكتبة Java مفتوحة المصدر لإنشاء صور مصغرة لعنوان URL معين.أحتاج إلى تجميع هذه الإمكانية، بدلاً من الاتصال بالخدمات الخارجية، مثل أمازون أو websnapr.

http://www.webrenderer.com/ تمت الإشارة إليه في هذه المشاركة: لقطات شاشة الويب التي أنشأها الخادم, لكنه حل تجاري.

أتمنى الحصول على حل يستند إلى Java، ولكن قد أحتاج إلى النظر في تنفيذ عملية خارجية مثل khtml2png, ، أو دمج شيء من هذا القبيل html2ps.

أي اقتراحات؟

هل كانت مفيدة؟

المحلول

وأول ما يتبادر إلى الذهن هو استخدام AWT للقبض على انتزاع الشاشة (انظر التعليمات البرمجية أدناه). هل يمكن أن ننظر في الاستيلاء على JEditorPane ، و JDIC <لأ href = "https://jdic.dev.java.net/nonav/documentation/ جافادوك / jdic / المنظمة / jdesktop / jdic / المتصفح / حزمة summary.html "يختلط =" noreferrer "> WebBrowser التحكم أو في بسم الله الرحمن الرحيم <لأ href = "http://help.eclipse.org/stable/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/ المتصفح / حزمة summary.html "يختلط =" noreferrer "> متصفح (وعبر في AWT تضمين الدعم ). الأخيران المتصفحات الأم تضمين (IE، فايرفوكس)، بحيث يعرض التبعيات. أوقفت دعمها 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);
    }

}

نصائح أخرى

وكنت طالبا في الأساس لجعل المحرك الكامل الوصول إليها عن طريق جافا. شخصيا، أنا من شأنه أن ينقذ نفسي المتاعب، وندعو إلى عملية تابعة.

وعلى خلاف ذلك، وأنا واجهت هذا المتصفح جافا النقي: وبو

ولم يكن هناك QA / اختبار الموقع / الخدمة التي من شأنها أن تسمح لك بتحديد صفحة الويب التي كنت تريد أن يتم تقديمها في متصفح معين (IE، فايرفوكس، وسفاري نسخة س، ص، ض) وأنها الإلكتروني لل لقطة بالرد عليك. '

لا أستطيع أن أتذكر الخدمة - ربما مطورين آخرين الذين يترددون ajaxian قد يتذكر أنه

حاول الاتصال ImageMagick.أعلم أنه ليس حلاً لـ Java، ولكن يمكنك استدعاؤه من Java، ويوجد حتى جافا الواجهة الأمامية, ، على الرغم من أنني حققت نجاحًا أقل في ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top