2010-04-30 7 views
5

का उपयोग कर वेबपृष्ठ को जेपीईजी छवि में परिवर्तित करना, मैं जावा में एक वेब एप्लिकेशन बना रहा हूं, जहां मैं वेबपृष्ठ का पूरा स्क्रीनशॉट चाहता हूं, अगर मैं वेबपृष्ठ का यूआरएल इनपुट के रूप में देता हूं।जावा

मूल विचार मेरे पास है प्रतिपादन component..I के प्रदर्शन बफर एक छोटे चाल मैं इस अनुप्रयोग के लिए प्रयोग किया जाता है पर कब्जा है कि यह कैसे .. plz मदद करने के लिए की पता नहीं है ..

उत्तर

3

नहीं है करने के लिए है :

count down demo app http://img580.imageshack.us/img580/742/capturadepantalla201004wd.png जावा आवेदन की विशेषता blog.stackoverflow.com पेज (डेमो वीडियो देखने के लिए छवि पर क्लिक करें)

समस्या आप एक मशीन घ की आवश्यकता है इसके लिए विकसित

तो, चाल काफी आसान है।

  • एक आवेदन है कि तर्क यूआरएल आप लाने के लिए चाहते हैं के रूप में लेता है बनाएँ।

  • फिर इसे Desktop.open(url ) के साथ खोलें जो वर्तमान वेबब्रोसर को ट्रिगर करेगा।

  • और अंत में java.awt.Robot के साथ स्क्रीनशॉट लें और इसे diks में सहेजें।

कुछ की तरह:

class WebScreenShot { 
    public static void main(String [] args) { 
     Desktop.getDesktop().open(args[0]); 
     Robot robot = new Robot(); 
     Image image = robot.createScreenCapture(getScreenResolutionSize()); 
     saveToDisk(image); 
    } 
    } 

यह समाधान है, क्योंकि यह पूरे ओएस की जरूरत है सही से दूर है, लेकिन आप कर सकते हैं अगर एक वीएम इस एप्लिकेशन के लिए समर्पित, आप वेब craw और ले जा सकते हैं इसके स्क्रीनशॉट काफी आसान है।

इस ऐप को गैर-घुसपैठ करने वाले ऐप के रूप में रखने की समस्या यह है कि इस तिथि तक जावा के लिए एक अच्छा HTML इंजन रेंडरर नहीं है।

+0

ध्यान दें कि यह [headless] (http://java.sun.com/javase/6/docs/api/java/awt/HeadlessException.html) सर्वर पर काम नहीं करता है। – BalusC

+0

@ बालुस्क यप, असल में मैंने इसे एक स्टैंडअलोन एप्लिकेशन के रूप में चलाया। – OscarRyz

3

एक शुद्ध-जावा समाधान के लिए जो समवर्ती प्रतिपादन का समर्थन करने के लिए स्केल कर सकता है, आप जावा एचटीएमएल 4/सीएसएस 2 ब्राउज़र का उपयोग कर सकते हैं, जैसे कि Cobra, जो जीयूआई के लिए एक स्विंग घटक प्रदान करता है। जब आप इस घटक का दृष्टांत, आप इसे पेंट (ग्राफिक्स छ) विधि है एक ऑफ स्क्रीन छवि

E.g. 
Component c = ...; // the browser component 
BufferedImage bi = new BufferedImage(c.getWidth(), c.getHeight(), TYPE_INT_RGB) 
Graphics2d g = bi.createGraphics();  
c.paint(g); 

फिर आप एक जेपीजी के रूप में सहेजना जावा छवि एपीआई का उपयोग कर सकते हैं में खुद को आकर्षित करने के लिए कह सकते हैं।

JPEGImageEncoder encoder = JPEGCodec.createEncoder(new FileOutputStream("screen.jpg")); 
enncoder.encode(bi); // encode the buffered image 

जावा-आधारित ब्राउज़र आमतौर पर स्थापित मूल ब्राउज़र की तुलना में पीले होते हैं। हालांकि, चूंकि आपका लक्ष्य स्थिर छवियां है, न कि एक इंटरैक्टिव ब्राउज़र, इस संबंध में जावा-आधारित ब्राउज़र पर्याप्त से अधिक हो सकता है।