2010-05-26 9 views
8

जावा में हम इसे निम्न प्रकार से कर सकते हैं:एक वेब अनुप्रयोग से .NET में एक स्क्रीनशॉट कैप्चर कैसे करें?

import java.awt.Dimension; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import javax.imageio.ImageIO; 
import java.io.File; 

... 

public void captureScreen(String fileName) throws Exception { 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    Rectangle screenRectangle = new Rectangle(screenSize); 
    Robot robot = new Robot(); 
    BufferedImage image = robot.createScreenCapture(screenRectangle); 
    ImageIO.write(image, "png", new File(fileName)); 

} 

... 

हम वेबपैलिकेशन से .NET में ऐसा कैसे करते हैं? ग्राहक की स्क्रीन को कैप्चर करना और इसे एप्लिकेशन में से सर्वर पर भेजना।

+0

स्पष्टीकरण के लिए मुझे एएसपी.नेट एमवीसी ऐप से ऐसा करना अच्छा लगेगा। –

+0

@CodeToGlory आप ग्राहक की स्क्रीन कॉपी करना चाहते हैं? वेब एप्लिकेशन पर यह संभव नहीं है। आपको क्लाइंट पर कोड चलाना होगा। –

+0

एएसपी.नेट से करना असंभव है। एकमात्र संभव तरीका एक सक्रिय नियंत्रण नियंत्रण बनाना होगा, लेकिन इसके समाधान के साथ भी, यह केवल आईई उपयोगकर्ताओं के साथ काम करेगा। फिर से सोचें कि आप अंततः क्या करने की कोशिश कर रहे हैं। – Icemanind

उत्तर

6

नेट ग्राफिक्स वस्तु) एक विधि CopyFromScreen (बुलाया है कि स्क्रीन का एक आयताकार क्षेत्र पर कब्जा है और यह एक बिटमैप में कॉपी जाएगा। यह करने के लिए सबसे अच्छा तरीका है निम्नलिखित के समान है:

public void CaptureImage(Point SourcePoint, Point DestinationPoint, Rectangle Selection, string FilePath) 
{ 
    using (Bitmap bitmap = new Bitmap(Selection.Width, Selection.Height)) { 
     using (Graphics g = Graphics.FromImage(bitmap)) { 
      g.CopyFromScreen(SourcePoint,DestinationPoint, Selection.Size); 
     } 
     bitmap.Save(FilePath, ImageFormat.Bmp); 
    } 
} 
+0

सच है, लेकिन अब हम जानते हैं कि इसे वेबप्लिकेशन से किया जाना है, यह कोड अकेला उत्तर नहीं है –

+0

हां। यदि वह ग्राहक की डेस्कटॉप स्क्रीन पर कब्जा करने की कोशिश कर रहा है, तो यह एएसपी.नेट से नहीं किया जा सकता है। शायद एक ActiveX, लेकिन यह केवल आईई विंडोज उपयोगकर्ताओं पर काम करेगा। – Icemanind

+0

चांदी की रोशनी के बारे में कैसे? अन्यथा आप स्पष्टीकरण के साथ इस प्रश्न के उत्तर के रूप में 'नहीं' जोड़ सकते हैं। –

1
+0

के साथ यह उल्लेखनीय रूप से एक वेब अनुप्रयोग की तरह दिखता है ... या नहीं ... –

+0

असल में वेब ऐप के लिए कोड होना आवश्यक है केवल मेरे उत्तर के बाद जोड़ा गया था ... इसलिए वोट के लिए धन्यवाद। – Paya

4

नहीं है, कोई रास्ता नहीं इस HTML या जावास्क्रिप्ट अकेले उपयोग किया जा सकता है। उनके पास बस ऐसा करने के तरीके नहीं हैं। एक संभावित कारण यह होगा कि यह जॉन सॉंडर्स की तरह एक सुरक्षा जोखिम होगा। वेबपैप्लिकेशंस बिना किसी जानकारी के उपयोगकर्ता स्क्रीन पर कुछ भी हो सकता है।

आपके द्वारा दिखाए गए सर्वर साइड कोड काम नहीं करते हैं, क्योंकि यह सर्वर की ओर चलाया जाता है। स्लीवरलाइट या एक ActiveX प्रपत्र काम कर सकता है, लेकिन कोई विकल्प नहीं है क्योंकि आप इसे सभी प्लेटफ़ॉर्म पर सभी ब्राउज़रों पर काम करना चाहते हैं।

संपादित

icemanind हमें it is possible using Silverlight में जाना जाता है की सुविधा देता है, लेकिन आप पूरे स्क्रीन पर कब्जा नहीं कर सकते हैं। शायद सुरक्षा कारणों से।

1

यह मूल वेब एप्लिकेशन के साथ और सिल्वरलाइट के साथ संभव नहीं है।

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

चलो एक कदम पीछे ले जाएं, और यह पूछें: आप क्या करने की कोशिश कर रहे हैं? आप स्क्रीनशॉट क्यों लेना चाहते हैं?

+0

उपयोगकर्ता इस मुद्दे के बारे में शिकायत कर रहे हैं कि मेरे जीवन को क्यूए या किसी भी पर्यावरण में दोहराया नहीं जा सका। इसका मतलब यह नहीं है कि यह नहीं हो रहा है, इसलिए हम इसे पहले से देखना चाहते हैं –

+0

@CodeToGlory: हो सकता है कि उपयोगकर्ता डिबगिंग उद्देश्यों के लिए क्या कर रहा है उसे कैप्चर करने के तरीके पर एक नया प्रश्न पूछना सबसे अच्छा है। स्क्रीनकैप्चर प्रोग्राम या डेस्कटॉप साझाकरण अनुप्रयोगों को ध्यान में आता है। –

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