2008-10-04 18 views
14

का उत्पादन करने के लिए ओपन सोर्स जावा लाइब्रेरी मैं किसी दिए गए यूआरएल के लिए थंबनेल जेनरेट करने के लिए ओपन सोर्स जावा लाइब्रेरी खोज रहा हूं। मुझे Amazon या websnapr जैसी बाहरी सेवाओं को कॉल करने के बजाय, इस क्षमता को बंडल करने की आवश्यकता है।वेबपृष्ठ थंबनेल सर्वर-साइड

http://www.webrenderer.com/ इस पोस्ट में उल्लेख किया गया था: Server generated web screenshots, लेकिन यह एक वाणिज्यिक समाधान है।

मैं जावा आधारित समाधान की उम्मीद कर रहा हूं, लेकिन khtml2png जैसे बाहरी प्रक्रिया को निष्पादित करने की आवश्यकता हो सकती है, या html2ps जैसे कुछ को एकीकृत करना पड़ सकता है।

कोई सुझाव?

उत्तर

6

पहली बात जो दिमाग में आती है वह स्क्रीन पकड़ने के लिए एडब्ल्यूटी का उपयोग कर रही है (नीचे कोड देखें)। आप JEditorPane पर कब्जा कर सकते हैं, JDICWebBrowser नियंत्रण या SWTBrowser (AWT embedding support के माध्यम से)। उत्तरार्द्ध दो मूल देशी ब्राउज़रों (आईई, फ़ायरफ़ॉक्स), तो निर्भरता परिचय; जेडडिटरपेन एचटीएमएल समर्थन एचटीएमएल 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); 
    } 

} 
3

आप अनिवार्य रूप से जावा द्वारा सुलभ एक पूर्ण प्रतिपादन इंजन के लिए पूछ रहे हैं। निजी तौर पर, मैं खुद को परेशानी बचाता हूं और एक बच्चे की प्रक्रिया में फोन करता हूं। Lobo

0

था नहीं वहाँ एक क्यूए/परीक्षण वेबसाइट/सेवा है जो आप एक वेब पेज है कि आप किसी विशेष ब्राउज़र में प्रदान की जा करना चाहता था स्पष्ट करने देते हैं (आईई:

अन्यथा, मैं इस शुद्ध जावा ब्राउज़र में भाग , FIREFOX, SAFARI संस्करण x, y, z) और वे आपको स्नैपशॉट वापस भेज देंगे। '

मुझे सेवा याद नहीं है - शायद अन्य डेवलपर्स जो अक्सर अजाक्सियन को याद रख सकते हैं?

0

ImageMagick पर कॉल करने का प्रयास करें। मुझे पता है कि यह जावा समाधान नहीं है, लेकिन आप इसे जावा से कॉल कर सकते हैं, और यहां तक ​​कि Java front-end भी है, हालांकि मुझे इसके साथ कम सफलता मिली है।

संबंधित मुद्दे