2012-01-19 19 views
12

के साथ छवि कैप्चर करें मैं छविग्रास्क्रीन के साथ एक स्थानीय वेब पेज कैप्चर करने की कोशिश कर रहा हूं लेकिन मुझे केवल एक ब्लैक स्क्रीनशॉट मिलता है। मैंने SO और अन्य साइटों पर प्रश्नों से लगभग हर समाधान की कोशिश की और कुछ भी काम नहीं करता है।छविग्रास्क्रीन और वैंप

मैं उपयोग कर रहा हूँ और किया निम्नलिखित:

  • विंडोज 7 64 बिट
  • Wamp 2.2a 64 बिट
  • पीएचपी 5.3.8
  • GD2 (संस्करण: "बंडल 2.0.34 संगत") स्थापित और सक्षम है।
  • डेस्कटॉप के साथ बातचीत करने के लिए अपाचे सेवा की अनुमति दी।
  • मेरे पास द्वितीयक डिस्प्ले या कुछ भी नहीं है।
<?php  
    $im = imagegrabscreen();  
    imagepng($im, "myscreenshot.png");  
    imagedestroy($im);  
?> 

और यह सब मैं एक काले रंग की छवि 1024x768 png है।

+0

क्या आपके पास ग्राफिक्स सर्वर चल रहा है (XFree86, X11)? – knittl

+0

@knittl: हम्म नहीं, यह विंडोज 7 सामान्य रूप से कुछ और नहीं चल रहा है। – Danny

+0

जो भी आप कर रहे हैं, मुझे उम्मीद है कि यह लाइव नहीं होगा। एक सर्वर के रूप में विंडोज SUCKS, और बॉक्स के ठीक बाहर कई सुरक्षा मुद्दे हैं। एक दीपक सर्वर, या कुछ और के लिए चिपके रहें। –

उत्तर

1

यह imagegrabscreen() के लिए php.net मैन्युअल पृष्ठ पर एक टिप्पणी से है; , यह कोशिश करते हैं और देखते हैं अगर यह समस्या ठीक होती है यह क्या आप में चला रहे हैं की तरह लगता है: अपने अपाचे सेवा काम करने के लिए

इसके लिए 'डेस्कटॉप के साथ बातचीत करने की अनुमति दें सेवा' पर सेट किया जाना चाहिए अन्यथा आप बस मिल जाएगा एक खाली छवि।

  • भागो व्यवस्थापक के रूप में कमांड services.msc:

वास्तव में परिवर्तन करने के लिए।

  • , सूची में अपाचे सेवा का पता लगाएं राइट क्लिक करें और चुनें गुण
  • यदि वह पहले से
  • नहीं है किसी स्थानीय सिस्टम खाते का उपयोग करने बताने वाला बॉक्स की जाँच करें टैब
  • बदलें सेवा पर लॉग इन करें Allow this service to interact with the desktop
  • अपाचे सेवा को पुनरारंभ करें।
  • +0

    यह याद आया है कि मैंने पहले किया है, admin.msc को व्यवस्थापक के रूप में चला रहा है, फिर लॉग ऑन में टैब ('वैम्पापैच' सेवा के पहले) ने पहले त्रिज्या का चयन किया और बॉक्स को चेक किया, लागू किया, ठीक है, और सेवा को पुनरारंभ करें और मुझे अभी भी स्क्रीनशॉट के रूप में एक काला छवि मिलती है। – Danny

    2

    आप इसे कर सकते हैं। इसे मैने किया है। मैंने WAMP का उपयोग नहीं किया। मैंने सब कुछ अलग किया। मेरे पास सभी PHP, MySQL और अपाचे सेटअप हैं।

    यहां दिए गए कदम हैं।

    1. अपाचे सर्वर सेवा बंद करो। आप

      NET STOP Apache2.2 
      

      लागू करके ऐसा कर सकते हैं या आप services.msc खोलने तो यह रोक सकता है।

    2. से Apache2.2 फ़ोल्डर को कॉपी करें। इसे कहीं भी रखें जहां आपके पास पूर्ण पहुंच है। Documents या अन्य ड्राइव की तरह। मैंने इसे K: में रखा है।यह सुनिश्चित करने के लिए कि आपके पास पूर्ण पहुंच है,

      1. रिकर्सिव रूप से अपाचे निर्देशिका का स्वामित्व प्राप्त करें।
      2. सुनिश्चित करें कि आपके पास Apache2.2 फ़ोल्डर के सुरक्षा टैब पर चिह्नित Full control है।
      3. यह नया अपाचे की कॉन्फ़िगरेशन फ़ाइल httpd.conf में बहुत सारे हार्डकोडेड पथ होंगे। C:\apache software foundation\apache2.2 की तरह। बस अपने नए रास्ते के साथ उन्हें प्रतिस्थापित करें। मेरे मामले में यह K:\Apache2.2 था।
    3. इस समय आपके अपाचे सर्वर सेवा को रोका जाना चाहिए। तो 80 बंदरगाह अवरुद्ध नहीं किया जाएगा। और आपके पास आपके अपाचे पर आपके क्षेत्र (निर्देशिका) होगा।

    4. खुला एक कंसोल विंडो और अपने अपाचे घर जहां htdocs फ़ोल्डर का उपयोग कर cd

    5. भागो bin\httpd.exe कुछ अन्य फ़ोल्डर के साथ रहता है पर जाएँ। इसका मतलब है आप अपाचे चला रहे हैं। आप आपके डेस्कटॉप पर पूर्ण पहुंच प्राप्त कर सकते हैं। आप कुछ भी कर सकते हैं, तो httpd.exe
    6. अपना वेब पेज खोलें। निम्नलिखित कोड के साथ।

      <?php 
      header("Content-type: image/png"); 
      $im = imagegrabscreen();  
      imagepng($im); 
      imagedestroy($im); 
      exit(0); 
      ?> 
      
    7. आप छवि देखेंगे।

    +0

    बक्षीस मिस। –

    +0

    मैं परीक्षण करने के लिए भूल गया था कि नवीनतम उत्तरों में से कोई भी काम करता है, लेकिन मैं कल फिर से कोशिश कर रहा हूं और अगर यह – Danny

    0

    आप imagegrabscreen साथ परेशानी हो रही है() आप boxcutter की तरह स्क्रीन पर कब्जा करने के एक खिड़कियों कमांड लाइन टूल का उपयोग करना चाहेंगे। फिर इसे कॉल करने के लिए PHP exec() फ़ंक्शन का उपयोग करें। पूर्व:

    <?php 
    
    $exec = exec('boxcutter -f image.png'); // -f is full screen option 
    
    +0

    काम करता है तो फाउंट के साथ इनाम देने वाला है! –

    +2

    सच है, लेकिन अगर कम से कम कुछ भी काम नहीं करता है तो यह एक तरीका है :) –