क्या PHP में किसी वेबसाइट का स्क्रीनशॉट लेने का कोई तरीका है, फिर उसे किसी फाइल में सेव करना?
क्या PHP में किसी वेबसाइट का स्क्रीनशॉट लेने का कोई तरीका है, फिर उसे किसी फाइल में सेव करना?
जवाबों:
पिछले संस्करण : 7 वर्षों के बाद भी मैं इस उत्तर के लिए उठ रहा हूं, लेकिन मुझे लगता है कि यह अब बहुत सटीक है।
सुनिश्चित करें कि आप कर सकते हैं, लेकिन आपको पृष्ठ को किसी चीज़ के साथ प्रस्तुत करना होगा। यदि आप वास्तव में केवल php का उपयोग करना चाहते हैं, तो मैं आपको HTMLTOPS का सुझाव देता हूं , जो पृष्ठ को प्रस्तुत करता है और इसे ps फाइल (भूत -लेख) में आउटपुट करता है, फिर, इसे .jpg, .png, .pdf में रूपांतरित करें .. के साथ धीमा हो सकता है। जटिल पृष्ठ (और सभी CSS का समर्थन नहीं करते हैं)।
और, आप wkhtmltopdf का उपयोग पीडीएफ, jpg, जो कुछ भी में एक html पृष्ठ को आउटपुट करने के लिए कर सकते हैं .. CSS2.0 को स्वीकार करें, पृष्ठ को प्रस्तुत करने के लिए वेबकिट (सफारी के रैपर) का उपयोग करें .. तो ठीक होना चाहिए। आपको इसे अपने सर्वर पर स्थापित करना होगा, साथ ही ।।
नई HTML5 और JS फीचर के साथ UPDATE नाउ, जावास्क्रिप्ट का उपयोग करके पेज को एक कैनवास ऑब्जेक्ट में रेंडर करना भी संभव है। यहाँ ऐसा करने के लिए एक अच्छा पुस्तकालय है: Html2Canvas और यहाँ G + जैसी प्रतिक्रिया प्राप्त करने के लिए एक ही लेखक द्वारा एक कार्यान्वयन है। एक बार जब आप डोम को कैनवास में प्रस्तुत कर लेते हैं, तो आप सर्वर को अजाक्स के माध्यम से भेज सकते हैं और इसे jpg के रूप में सहेज सकते हैं।
EDIT : पीडीएफ़ को png में बदलने के लिए आप इमेजमैजिक टूल का उपयोग कर सकते हैं। Wkhtmltopdf का मेरा संस्करण छवियों का समर्थन नहीं करता है। जैसे convert html.pdf -append html.png
।
EDIT : यह छोटा खोल स्क्रिप्ट php5-cli और उपर्युक्त उपकरणों के साथ लिनक्स पर एक सरल / लेकिन काम करने का उपयोग उदाहरण देता है।
संपादित करें : मैंने अब देखा कि wkhtmltopdf टीम एक अन्य परियोजना पर काम कर रही है: wkhtmltoimage, जो आपको सीधे jpg देती है
PHP 5.2.2 के बाद से, PHP के साथ पूरी तरह से वेबसाइट पर कब्जा करना संभव है !
imagegrabscreen - पूरी स्क्रीन को कैप्चर करता है
<?php
$img = imagegrabscreen();
imagepng($img, 'screenshot.png');
?>
imagegrabwindow - विंडो हैंडल (COM उदाहरण में HWND संपत्ति) का उपयोग करके एक विंडो या उसके क्लाइंट क्षेत्र को पकड़ता है
<?php
$Browser = new COM('InternetExplorer.Application');
$Browserhandle = $Browser->HWND;
$Browser->Visible = true;
$Browser->Fullscreen = true;
$Browser->Navigate('http://www.stackoverflow.com');
while($Browser->Busy){
com_message_pump(4000);
}
$img = imagegrabwindow($Browserhandle, 0);
$Browser->Quit();
imagepng($img, 'screenshot.png');
?>
संपादित करें: ध्यान दें, ये कार्य केवल विंडोज सिस्टम पर उपलब्ध हैं!
यदि आप किसी तीसरे पक्ष के टूल का उपयोग नहीं करना चाहते हैं, तो मैं सरल समाधान के लिए आया हूं जो Google पेज इनसाइट एप का उपयोग कर रहा है ।
बस कॉल करने की जरूरत है, यह परम के साथ है screenshot=true
।
https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=https://stackoverflow.com/&key={your_api_key}&screenshot=true
मोबाइल साइट देखने के लिए पास &strategy=mobile
में,
https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=http://stackoverflow.com/&key={your_api_key}&screenshot=true&strategy=mobile
डेमो ।
आप पेज को हथियाने के लिए PhantomJS जैसे सरल हेडलेस ब्राउज़र का उपयोग कर सकते हैं।
इसके अलावा आप PHP के साथ PhantomJS का उपयोग कर सकते हैं।
इस छोटी सी php स्क्रिप्ट को देखें जो ऐसा करती है। यहां देखें https://github.com/microweber/screen
और यहाँ एपीआई- http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-use-php
यह आपके लिए अच्छा होना चाहिए:
सुनिश्चित करें कि आप wkhtmltoimage वितरण डाउनलोड करें!
हाँ। आपको कुछ चीजों की आवश्यकता होगी:
* Nx पर khtmld (anemon) देखें । Windows के लिए Url2Jpg देखें, लेकिन चूंकि यह डॉटनेट ऐप है, इसलिए आपको Url2Bmp को भी चबाना चाहिए
दोनों कंसोल टूल हैं जो स्क्रीनशॉट लेने के लिए आपके वेब ऐप से उपयोग कर सकते हैं।
वेब सेवाएँ भी हैं जो इसे प्रदान करती हैं। उदाहरण के लिए इसे देखें ।
संपादित करें:
यह लिंक उपयोगी है।
यह पायथन में है, लेकिन प्रलेखन और कोड पर जाकर आप देख सकते हैं कि यह कैसे किया जाता है। यदि आप अजगर को चला सकते हैं, तो यह आपके लिए एक तैयार समाधान है:
ध्यान दें कि एक प्लेटफ़ॉर्म के लिए एक मशीन पर सब कुछ चल सकता है, या वर्चुअल मशीन के साथ एक मशीन दूसरे प्लेटफ़ॉर्म पर चल सकती है।
नि: शुल्क, खुला स्रोत, प्रलेखन, स्रोत कोड और अन्य जानकारी के लिंक के लिए पृष्ठ के निचले भाग तक स्क्रॉल करें।
हाँ यही है। यदि आपको केवल URL की छवि की आवश्यकता है तो यह प्रयास करें
<img src='http://zenithwebtechnologies.com.au/thumbnail.php?url=www.subway.com.au'>
तर्क के रूप में url पास करें और आपको अधिक विवरण के लिए छवि मिल जाएगी इस लिंक की जाँच करें http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
खैर, फैंटमज एक ब्राउज़र है जिसे आसानी से एक सर्वर पर रखा जा सकता है और इसे php में एकीकृत किया जा सकता है। आप कोड WD WD में पा सकते हैं। उन्होंने बहुत अधिक विशेषताओं को शामिल किया है जैसे कि छवि का आकार निर्दिष्ट करना, कैश, फ़ाइल के रूप में डाउनलोड करना या img src आदि में प्रदर्शित करना।
<img src=”screenshot.php?url=google.com” />
URL पैरामीटर
चौड़ाई और ऊँचाई: screenshot.php? Url = google.com & w = 1000 & h = 800
क्रॉपिंग के साथ: स्क्रीनशॉट.php; url = google.com & w = 1000 & h = 800 और क्लिपव = 800 और क्लिपह = 600
कैश अक्षम करें और ताज़ा पेचकश लोड करें:
स्क्रीनशॉट .php ? Url = google.com & cache = 0
छवि डाउनलोड करने के लिए: screenshot.php? Url = google.com & download = true
आप यहां ट्यूटोरियल देख सकते हैं: PHP के बिना एपीआई का उपयोग करके वेबसाइट का स्क्रीनशॉट कैप्चर करें
मैं हमेशा किसी भी वेबपेज के स्क्रीनशॉट को कैप्चर करने के लिए माइक्रोवेब स्क्रीन का उपयोग करता हूं । यहाँ हम एक अच्छी तरह से लिखा ट्यूटोरियल पा सकते हैं । यह आसान है और इसे सीखने में 3 मिनट से अधिक नहीं लगना चाहिए।
मैंने अंततः @boksiora द्वारा प्रस्तावित माइक्रोवेब / स्क्रीन का उपयोग करके सेट किया ।
शुरू में यहाँ दिए गए लिंक की कोशिश करने पर मुझे क्या मिला:
Please download this script from here https://github.com/microweber/screen
मैं लिनक्स पर हूँ। इसलिए यदि आप इसे चलाना चाहते हैं, तो आप मेरे कदम को अपने परिवेश में समायोजित कर सकते हैं।
यहाँ मैं अपने शेल पर DOCUMENT_ROOT
फ़ोल्डर पर किया गया कदम है :
$ sudo wget https://github.com/microweber/screen/archive/master.zip
$ sudo unzip master.zip
$ sudo mv screen-master screen
$ sudo chmod +x screen/bin/phantomjs
$ sudo yum install fontconfig
$ sudo yum install freetype*
$ cd screen
$ sudo curl -sS https://getcomposer.org/installer | php
$ sudo php composer.phar update
$ cd ..
$ sudo chown -R apache screen
$ sudo chgrp -R www screen
$ sudo service httpd restart
अपने ब्राउज़र को इंगित करें screen/demo/shot.php?url=google.com
। जब आप स्क्रीनशॉट देखते हैं , तो आप कर रहे हैं। अधिक अग्रिम सेटिंग के लिए चर्चा यहाँ और यहाँ उपलब्ध है ।
कई ओपन सोर्स प्रोजेक्ट हैं जो स्क्रीनशॉट उत्पन्न कर सकते हैं। उदाहरण के लिए PhantomJS, webkit2png आदि
इन परियोजनाओं के साथ बड़ी समस्या यह है कि वे पुराने ब्राउज़र तकनीक पर आधारित हैं और कई साइटों को प्रस्तुत करने में समस्याएँ हैं, विशेष रूप से ऐसी साइटें जो वेबफोंट्स, फ्लेक्सबॉक्स, एसवीजी और एचटीएमएल 5 और सीएसएस के कई अन्य परिवर्धन का उपयोग पिछले कुछ महीनों / वर्षों में करती हैं।
मैंने थर्ड पार्टी सेवाओं में से कुछ की कोशिश की है, और अधिकांश फैंटमजस पर आधारित हैं, जिसका अर्थ है कि वे खराब गुणवत्ता वाले स्क्रीनशॉट भी बनाते हैं। वेबसाइट स्क्रीनशॉट बनाने के लिए सबसे अच्छी थर्ड पार्टी सर्विस urlbox.io है । यह एक सशुल्क सेवा है, हालांकि किसी भी सशुल्क योजना के लिए इसे निशुल्क परीक्षण करने के लिए 7 दिनों का नि: शुल्क परीक्षण है।
यहाँ प्रलेखन के लिए एक कड़ी है , और नीचे संगीतकार के साथ PHP में काम करने के लिए सरल कदम हैं।
// 1 . Get the urlbox/screenshots composer package (on command line):
composer require urlbox/screenshots
// 2. Set up the composer package with Urlbox API credentials:
$urlbox = UrlboxRenderer::fromCredentials('API_KEY', 'API_SECRET');
// 3. Set your options (all options such as full page/full height screenshots, retina resolution, viewport dimensions, thumbnail width etc can be set here. See the docs for more.)
$options['url'] = 'example.com';
// 4. Generate the Urlbox url
$urlboxUrl = $urlbox->generateUrl($options);
// $urlboxUrl is now 'https://api.urlbox.io/v1/API_KEY/TOKEN/png?url=example.com'
// 5. Now stick it in an img tag, when the image is loaded in browser, the API call to urlbox will be triggered and a nice PNG screenshot will be generated!
<img src="$urlboxUrl" />
उदाहरण के लिए यहाँ इस पृष्ठ की पूर्ण ऊँचाई स्क्रीनशॉट है:
बहुत सारे विकल्प हैं और वे सभी अपने पेशेवरों और विपक्ष हैं। कार्यान्वयन कठिनाई द्वारा आदेशित विकल्पों की सूची यहां दी गई है।
पेशेवरों
विपक्ष
पेशेवरों
विपक्ष
पेशेवरों
विपक्ष
पेशेवरों
विपक्ष
अस्वीकरण: मैं ApiFlash का संस्थापक हूं। मैंने एक ईमानदार और उपयोगी उत्तर देने की पूरी कोशिश की।
मैं विंडोज पर हूं इसलिए मैं स्टेपहान से यहां टिप पढ़ने के बाद इमेजग्रेविंडो फ़ंक्शन का उपयोग करने में सक्षम था। मैंने क्रॉपिंग (ब्राउज़र हेडर, स्क्रॉल बार आदि से छुटकारा पाने के लिए) और अंतिम छवि प्राप्त करने के लिए आकार बदलने में जोड़ा। यहाँ मेरा कोड है । आशा है कि किसी की मदद करता है।
webkit2html मैक ओएस एक्स और लिनक्स पर काम करता है, इंस्टॉल करने और उपयोग करने के लिए काफी सरल है। इस ट्यूटोरियल देखें ।
विंडोज के लिए, आप CutyCapt के साथ जा सकते हैं , जिसमें समान कार्यक्षमता है।
मैंने ब्ल्यूगा का इस्तेमाल किया । एप आपको बिना भुगतान किए एक महीने में 100 स्नैपशॉट लेने की अनुमति देता है, लेकिन कभी-कभी यह एक पृष्ठ के लिए 1 से अधिक क्रेडिट का उपयोग करता है। मैंने ड्रुपल 7 में एक ड्रुपल मॉड्यूल, ब्लुगा वेबटुम्स को अपग्रेड करने के लिए समाप्त कर दिया है, जो आपको टेम्पलेट या इनपुट फिल्टर में थंबनेल प्रिंट करने की अनुमति देता है।
इस एपीआई का उपयोग करने का मुख्य लाभ यह है कि यह आपको अनुकूली सीएसएस का उपयोग करने की स्थिति में ब्राउज़र आयामों को निर्दिष्ट करने की अनुमति देता है, इसलिए मैं इसका उपयोग मोबाइल और टैबलेट लेआउट के साथ-साथ नियमित रूप से करने के लिए करता हूं।
निम्नलिखित भाषाओं के लिए एपीआई क्लाइंट हैं:
PHP , पायथन , रूबी , जावा , .Net C # , पर्ल और बैश (शेल स्क्रिप्ट ऐसा लगता है कि इसे पर्ल की आवश्यकता है)
यह सब इस बात पर निर्भर करता है कि आप स्क्रीनशॉट कैसे लेना चाहते हैं।
आप PHP के माध्यम से ऐसा कर सकते हैं, जो आपके लिए छवि प्राप्त करने के लिए एक webservice का उपयोग कर रहा है
Grabz.it में ऐसा करने के लिए एक webservice है, यहां एक लेख है जो सेवा का उपयोग करने का एक सरल उदाहरण दिखाता है।
आप https://grabz.it समाधान का उपयोग कर सकते हैं।
यह एक PHP एपीआई है जो बहुत लचीला है और इसे विभिन्न तरीकों से बुलाया जा सकता है जैसे कि क्रोनजोब या पीएचपी वेब पेज से।
इसे कार्यान्वित करने के लिए आपको सबसे पहले एक ऐप कुंजी प्राप्त करनी होगी और गुप्त और (मुफ्त) एसडीके डाउनलोड करना होगा।
और कार्यान्वयन के लिए एक उदाहरण। सर्वप्रथम आरंभीकरण:
include("GrabzItClient.class.php");
// Create the GrabzItClient class
// Replace "APPLICATION KEY", "APPLICATION SECRET" with the values from your account!
$grabzIt = new GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret");
और स्क्रीनशॉट उदाहरण:
// To take a image screenshot
$grabzIt->URLToImage("http://www.google.com");
// Or to take a PDF screenshot
$grabzIt->URLToPDF("http://www.google.com");
// Or to convert online videos into animated GIF's
$grabzIt->URLToAnimation("http://www.example.com/video.avi");
// Or to capture table(s)
$grabzIt->URLToTable("http://www.google.com");
अगला सेविंग है। Save
यदि आप सार्वजनिक रूप से सुलभ कॉलबैक हैंडल उपलब्ध हैं और SaveTo
नहीं तो दो सेव मेथड्स में से एक का उपयोग कर सकते हैं । विवरण के लिए प्रलेखन की जाँच करें ।
मैंने Google API का उपयोग करके ऐसा करने के लिए दूसरे दिन एक त्वरित और गंदा ऐप लिखा। निश्चित रूप से सुधार की गुंजाइश ...
इसे लाइव डेमो और कोड के साथ यहां खोजें ।
मैंने यहां केवल इसलिए कोड पोस्ट नहीं किया क्योंकि मैं इसे परिष्कृत करता रहता हूं और उम्मीद है कि जब मेरे पास समय होगा, तो इसे एक उचित वर्ग में बदल दें।
मैंने page2images का उपयोग किया । इसे क्यूटीकैप पर विकसित किया गया है जो वास्तव में तेज और स्थिर है। यदि आप प्रदर्शन और कॉन्फ़िगरेशन पर बहुत अधिक समय खर्च नहीं करना चाहते हैं, तो आपको इसका उपयोग करना चाहिए। यदि आप उनकी वेबसाइट पर जाते हैं, तो आप अधिक विवरण और नमूना PHP कोड पा सकते हैं।
वेब पर सर्फिंग के लिए मुझे बहुत कुछ मिला।
PPTRAAS > अपने URL को एक पैरामीटर के रूप में पास करके स्क्रीनशॉट पर कब्जा करने का एक निशुल्क उपकरण
वे बस अपने URL को मारकर कई विकल्प प्रदान करते हैं।
पूर्ण पृष्ठ स्क्रीनशॉट प्राप्त करें
https://pptraas.com/screenshot?url= {आप URL यहाँ}
विशिष्ट आकार का पेज स्क्रीनशॉट प्राप्त करें
https://pptraas.com/screenshot?url= {आप URL यहाँ} और आकार = 400,400
यहां तक कि पेज को पीडीएफ में भी बदल सकते हैं
https://pptraas.com/pdf?url= {आप URL यहाँ}
आप 2 काम कर सकते हैं।
कठपुतली का उपयोग करें
आप ब्राउज़र को स्पिन करने और स्क्रीनशॉट लेने के लिए PHP Puppeteer पैकेज का उपयोग कर सकते हैं ।
एक एपीआई का उपयोग करें
बहुत सारे स्क्रीनशॉट एपीआई हैं। आप उदाहरण के लिए ScreenshotAPI.net को देख सकते हैं । (अस्वीकरण मैं उस एपीआई का निर्माता हूं)
प्रत्यक्ष नहीं। सेलेनियम जैसे सॉफ्टवेयर में इस तरह की विशेषताएं होती हैं और इसे पीएचपी द्वारा नियंत्रित किया जा सकता है, लेकिन अन्य निर्भरताएं भी हैं (जैसे कि आपके ब्राउज़र में कंप्यूटर पर अपना जावा-आधारित सर्वर चलाना जो आप स्क्रीनशॉट लेना चाहते हैं)
आप कटाइकैप का उपयोग कर सकते हैं।
kwhtml पुराने ब्राउज़र की तरह पदावनत और शो पेज है।
मैंने इसे सबसे अच्छा और आसान टूल माना है: ScreenShotMachine । यह एक भुगतान की गई सेवा है, लेकिन आपको 100 मुफ्त स्क्रीनशॉट मिलते हैं और आप $ 20 (लगभग) $ 20 के लिए एक और 2,000 खरीद सकते हैं, इसलिए यह बहुत अच्छा सौदा है। इसका एक बहुत ही सरल उपयोग है, आप बस एक URL का उपयोग करते हैं, इसलिए मैंने इस पर आधारित फ़ाइल को सहेजने के लिए यह छोटी स्क्रिप्ट लिखी है:
<?php
$url = file_get_contents("http://api.screenshotmachine.com/?key={mykey}&url=https://stackoverflow.com&size=X");
$file = fopen("snapshots/stack.jpg", "w+");
fwrite($file, $url);
fclose($file);
die("saved file!");
?>
उनके पास यहां बहुत अच्छा दस्तावेज है , इसलिए आपको निश्चित रूप से एक नज़र रखना चाहिए।