ภาพหน้าจอเว็บไซต์


407

มีวิธีการจับภาพหน้าจอของเว็บไซต์ใน PHP แล้วบันทึกลงในไฟล์หรือไม่?


2
ถ้าคุณชอบวิธีแก้ปัญหาลองดูที่Usersnap - เป็นบริการที่ดีที่นำเสนอภาพหน้าจอเว็บไซต์ที่แม่นยำ คุณเพียงแค่เพิ่มข้อมูล Javascript ขนาดเล็กในหน้าของคุณเพื่อให้มันทำงานได้
Gregor

1
Usersnap ไม่สามารถรับมือกับหน้าเว็บที่ใช้ Ajax เพื่อสร้างเนื้อหาเช่นนี้ในหน้านี้ ฉันจะบรรลุสิ่งนั้นได้อย่างไร สมมติว่า: ทำภาพหน้าจอ 10 วินาทีหลังจากการโหลดหน้าแรกเสร็จแล้ว
rubo77

1
@ rubo77: Usersnap สนับสนุน DOM แบบไดนามิกดังกล่าวฉันได้ลองกับหน้าของคุณแล้ว - ภาพหน้าจอจะสร้างการจัดตำแหน่งที่แน่นอนรวมถึงตำแหน่งทั้งหมด
Gregor

คำตอบ:


280

แก้ไขล่าสุด : หลังจาก 7 ปีฉันยังคงได้รับ upvotes สำหรับคำตอบนี้ แต่ผมคิดว่าอันนี้คือตอนนี้ความแม่นยำมากขึ้น


แน่นอนคุณสามารถทำได้ แต่คุณจะต้องแสดงหน้าเว็บด้วยบางสิ่ง หากคุณต้องการใช้ php จริงๆฉันขอแนะนำให้คุณHTMLTOPSซึ่งแสดงหน้าและแสดงผลในไฟล์ ps (ghostscript) จากนั้นแปลงเป็นไฟล์. jpg, .png, .pdf .. อาจช้าลงเล็กน้อยด้วย หน้าเว็บที่ซับซ้อน (และไม่สนับสนุน CSS ทั้งหมด)

มิฉะนั้นคุณสามารถใช้wkhtmltopdfเพื่อส่งออกหน้า html ใน pdf, jpg หรืออะไรก็ได้ .. ยอมรับ CSS2.0 ใช้ webkit (wrapper ของซาฟารี) เพื่อแสดงหน้า .. ดังนั้นควรจะดี คุณต้องติดตั้งบนเซิร์ฟเวอร์ของคุณเช่นกัน ..

อัปเดตทันทีด้วยคุณลักษณะใหม่ของ HTML5 และ JS สามารถแสดงหน้าเป็นวัตถุแคนวาสโดยใช้ JavaScript นี่เป็นห้องสมุดที่น่าทำ: Html2Canvasและนี่คือการดำเนินการโดยผู้เขียนคนเดียวกันเพื่อรับข้อเสนอแนะเช่น G + เมื่อคุณแสดง dom เป็นผืนผ้าใบแล้วคุณสามารถส่งไปยังเซิร์ฟเวอร์ผ่าน ajax และบันทึกเป็น jpg

แก้ไข : คุณสามารถใช้เครื่องมือ imagemagick สำหรับการแปลงไฟล์ PDF เป็น png รุ่นของฉัน wkhtmltopdf ไม่รองรับภาพ convert html.pdf -append html.pngเช่น

แก้ไข : สคริปต์เปลือกขนาดเล็กนี้ให้ตัวอย่างง่ายๆ / แต่การใช้งานทำงานบน linux กับ php5-cli และเครื่องมือที่กล่าวถึงข้างต้น

แก้ไข : ฉันสังเกตเห็นแล้วว่าทีม wkhtmltopdf กำลังทำงานในโครงการอื่น: wkhtmltoimage ที่ให้ jpg กับคุณโดยตรง


11
+1 สำหรับ wkhtmltopdf ฉันเล่นกับห้องสมุดอื่น แต่ไม่มีพวกเขาเข้ามาสนับสนุนอะไรมากกว่า HTML และ CSS พื้นฐานมาก wkhtmltopdf สามารถทำทุกอย่างที่ Safari ทำดังนั้นคุณค่อนข้างปลอดภัย
Wim

7
wkhtmltoimage ใช้งานได้ดี! ขอบคุณสำหรับทิป. เอาต์พุต png เช่นกัน
yuttadhammo

2
ตอนนี้คุณพูดถึง wkhtmltopdf KnpLabs มีเสื้อคลุมสำหรับมันgithub.com/KnpLabs/snappy
rmontagud

1
@rmontagud การใช้ wkhtmltopdf นั้นค่อนข้างง่ายโดยวิธีที่ wrapper OOP นั้นดีเสมอ!
Strae

1
ทั้งหมดนี้เป็นโซลูชั่นที่ยอดเยี่ยมเมื่อไม่กี่ปีที่ผ่านมา แต่เทคโนโลยีเบราว์เซอร์ทั้งหมดล้วนแล้วแต่ยังไม่ได้รับการปรับปรุงด้วยข้อมูลล่าสุดในข้อมูลจำเพาะ HTML5 / CSS หากคุณกำลังแสดงผลเว็บไซต์ที่ใช้ประโยชน์จาก webfonts, svg, canvas, flexbox และอื่น ๆ ขอให้โชคดีที่ได้ภาพหน้าจอที่ถูกต้อง .. หากคุณต้องการภาพหน้าจอที่ถูกต้องตรวจสอบคำตอบของฉันซึ่งใช้urlbox
cjroebuck

87

ตั้งแต่ PHP 5.2.2 เป็นไปได้ที่จะจับเว็บไซต์ด้วย PHP เท่านั้น !

imagegrabscreen - จับทั้งหน้าจอ

<?php
$img = imagegrabscreen();
imagepng($img, 'screenshot.png');
?>

imagegrabwindow - ดึงหน้าต่างหรือพื้นที่ไคลเอ็นต์โดยใช้ตัวจัดการ windows (คุณสมบัติ HWND ในอินสแตนซ์ COM)

<?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');
?>

แก้ไข: หมายเหตุฟังก์ชั่นเหล่านี้มีอยู่ในระบบ Windows เท่านั้น!


26
ไม่ใช่ PHP จริงๆเหรอ?
Toby Allen

นี่คือการใช้เบราว์เซอร์ Internet Explorer เพื่อแสดงเนื้อหา
keanu_reeves

55

หากคุณไม่ต้องการใช้เครื่องมือของบุคคลที่สามฉันได้พบกับโซลูชันง่ายๆที่ใช้Google Page Insight api

จำเป็นเพียงเพื่อเรียกมันว่าของ API กับ screenshot=trueparams

https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=https://stackoverflow.com/&key={your_api_key}&screenshot=true

สำหรับมุมมองผ่านเว็บไซต์โทรศัพท์มือถือ&strategy=mobileใน params,

https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=http://stackoverflow.com/&key={your_api_key}&screenshot=true&strategy=mobile

DEMO


3
นี่มันเจ๋งมากและก็ดูเหมือนว่าจะทำงานโดยไม่ต้องใส่รหัส api ภาพที่ส่งกลับใช้งานไม่ได้คุณต้องแทนที่ '_' ด้วย '/' และ 'ทั้งหมด' - 'ด้วย' + 'และจากนั้นคุณสามารถเพิ่มมันเป็น data uri
Robert Went

9
นี่มันเจ๋งมาก. ฉันเขียนโค้ดนี้ขึ้นที่gist.github.com/jaseclamp/d4ac6205db352e822ff6
JaseC

21
ดังนั้นสำหรับการอ้างอิง Page Insight API ของ Google เป็นเครื่องมือของบุคคลที่สาม
Jimbo

1
สกรีนช็อตมีความละเอียด จำกัด อยู่ที่ 320x240 เป็นเหมือนนิ้วหัวแม่มือ
Gabriele F.

1
ยอดเยี่ยมจริงๆ! มีข้อ จำกัด ในการใช้หรือไม่
moreirapontocom

19

คุณสามารถใช้เบราว์เซอร์แบบหัวขาดง่ายๆเช่น PhantomJS เพื่อคว้าหน้า

นอกจากนี้คุณสามารถใช้ PhantomJS กับ PHP

ลองดูสคริปต์ php ตัวเล็ก ๆ ที่ทำสิ่งนี้ ดูที่นี่https://github.com/microweber/screen

และนี่คือ API- http://screen.microweber.com/shot.php?url=/programming/757675/website-sc Screenshots-using-php


โดยทั่วไป PhantomJS เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมสำหรับเรื่องนี้แม้ว่าเมื่อฉันใช้เพื่อจุดประสงค์นี้ แต่องค์ประกอบอินเทอร์เฟซ HTML ทั้งหมดที่แสดงผลไม่ถูกต้อง
ultrageek

2
screen.microweber.com/shot.php?url=https://stackoverflow.com/ปัจจุบันเป็น 404 และสงสัยว่าคำตอบที่นี่ควรถูกลบหรือไม่ ไม่ว่าในกรณีใดควรทำการอัปเดต
Funk Forty Niner

18

สิ่งนี้จะดีสำหรับคุณ:

https://wkhtmltopdf.org/

ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดการกระจาย wkhtmltoimage!


1
BTW ฉันได้รับการติดตั้งบน Ubuntu 10.04 เพียงใช้ apt-get อย่างไรก็ตามเมื่อฉันวิ่งมันมันช้ามากและรูปแบบ PDF เป็นที่น่าสงสัยและไม่ใช่ตัวเลือกที่ทำงานได้จริง อย่างไรก็ตามมันแสดงสัญญาว่าจะใช้ KHTML ด้วยวิธีนี้ - ในที่สุด - สำหรับการสร้างภาพ
Volomike

@Volomike - คุณไม่สามารถรับผลลัพธ์ที่ดีไปกว่านี้ได้อย่างที่ทราบเนื่องจากมีการใช้เบราว์เซอร์ที่เป็นมาตรฐาน สำหรับความเร็ว บริษัท ที่ฉันทำงานด้วยได้ใช้มันซ้ำ ๆ ในโครงการเบ็ดเตล็ดที่ต้องการโครงการ CSS ที่ละเอียด (แต่เล็ก)
คริสเตียน

ฉันสามารถรับรองประสิทธิภาพของผลิตภัณฑ์นี้ ฉันพัฒนาแอพพลิเคชั่นสร้างแผนภูมิสำหรับลูกค้าภาครัฐซึ่งส่งผ่าน html / css แต่ต้องเก็บถาวรเป็น pdf ไม่มีผลิตภัณฑ์ web-to-pdf อื่น ๆ ใกล้เคียงกับการสร้างแผนภูมิของเราอย่างสมบูรณ์แบบเป็น wkhtmltopdf
Daniel Szabo

@Volomike: เวอร์ชันในที่เก็บมักไม่ใช่รุ่นล่าสุด การติดตั้งเวอร์ชั่นเสถียรล่าสุดจากแหล่งที่มาแก้ไขข้อผิดพลาดมากมายของเวอร์ชั่นเก่าสำหรับฉัน
Piskvor ออกจากอาคาร

10

ใช่. คุณจะต้องมีสิ่งที่ต้องการ:

ดูkhtmld (aemon)ใน * nx ดูUrl2Jpgสำหรับ Windows แต่เนื่องจากเป็นแอพ dotNet คุณก็ควรที่จะ chek Url2Bmp

ทั้งสองเป็นเครื่องมือคอนโซลที่คุณสามารถใช้ประโยชน์จากเว็บแอปของคุณเพื่อรับภาพหน้าจอ

นอกจากนี้ยังมีบริการเว็บไซต์ที่ให้บริการ ตรวจสอบนี้ออกตัวอย่างเช่น

แก้ไข:

นี้การเชื่อมโยงเป็นประโยชน์ในการ


10

มันอยู่ใน Python แต่คุณสามารถดูเอกสารและรหัสได้อย่างชัดเจน หากคุณสามารถใช้งาน python ได้มันเป็นโซลูชั่นสำเร็จรูปสำหรับคุณ:

http://browsershots.org/

โปรดทราบว่าทุกอย่างสามารถทำงานบนเครื่องหนึ่งเครื่องสำหรับแพลตฟอร์มเดียวหรือเครื่องหนึ่งที่มีเครื่องเสมือนที่ใช้งานแพลตฟอร์มอื่น

ฟรีโอเพนซอร์สเลื่อนไปที่ด้านล่างของหน้าสำหรับลิงก์ไปยังเอกสารรหัสแหล่งที่มาและข้อมูลอื่น ๆ


24
กฎข้อที่ 37: ไม่มีการทำเกินจริง มีเพียง 'ไฟเปิด' และ 'เวลาโหลดใหม่'
Adam Davis

ซอร์สโค้ดยังคงสร้างเบราว์เซอร์บนเดสก์ท็อปสำหรับการแสดงผล มันไม่ปลอดภัยอย่างแน่นอนและอาจเสี่ยงต่อการถูกล็อค
Volomike

@Volomike - จริง แต่ถ้าคุณต้องการดูว่าหน้าตาเป็นอย่างไรเมื่อเบราว์เซอร์ทำงานมันไม่มีทางเลือกที่ดีกว่าเลย เอ็นจิ้นการเรนเดอร์ HTML ไปได้ไกลแค่ไหนกับหน้าจาวาสคริปต์หนัก ๆ ในปัจจุบัน การตั้งค่าสิทธิ์ดำเนินการที่เหมาะสมและหมดเวลาควร จำกัด ความยากลำบากและความเสี่ยงของการเรียกใช้โปรแกรมภายนอก
Adam Davis

5

ใช่แล้ว. หากคุณต้องการภาพของ 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


2
บริการถูกหยุด
Mohammad Naji

5

PhantomJS เป็นเบราว์เซอร์ที่สามารถติดตั้งบนเซิร์ฟเวอร์และรวมเข้ากับ php ได้อย่างง่ายดาย คุณสามารถค้นหารหัสได้ใน WDudes มีคุณสมบัติเพิ่มเติมมากมายเช่นการระบุขนาดรูปภาพแคชดาวน์โหลดเป็นไฟล์หรือแสดงใน img src เป็นต้น

<img src=”screenshot.php?url=google.com” />

พารามิเตอร์ URL

  • ความกว้างและความสูง: screenshot.php? url = google.com & w = 1,000 & h = 800

  • ด้วยการครอบตัด: screenshot.php? url = google.com & w = 1,000 & h = 800 & clipw = 800 & cliph = 600

  • ปิดใช้งานแคชและโหลด screesnhot ใหม่:
    screenshot.php? url = google.com & cache = 0

  • ในการดาวน์โหลดภาพ: screenshot.php? url = google.com & download = true

คุณสามารถดูบทช่วยสอนได้ที่นี่: จับภาพหน้าจอของเว็บไซต์โดยใช้ PHP โดยไม่มี API


โอ้ ขอโทษด้วยกับเรื่องนั้น. ดูเหมือนว่าบล็อกไม่ได้อีกต่อไป ลองgithub.com/graphcool/chromeless @NarendraVerma
Gijo Varghese

4

cutycapt บันทึกหน้าเว็บเป็นรูปแบบภาพส่วนใหญ่ (jpg, png .. ) ดาวน์โหลดจาก synaptic ของคุณมันทำงานได้ดีกว่า wkhtmltopdf



3

ในที่สุดฉันก็ตั้งค่าโดยใช้microweber / screenตามที่เสนอโดย @boksiora
เริ่มแรกเมื่อพยายามลิงก์ที่กล่าวถึงที่นี่สิ่งที่ฉันได้รับ:

Please download this script from here https://github.com/microweber/screen

ฉันอยู่บน Linux ดังนั้นหากคุณต้องการเรียกใช้คุณสามารถปรับขั้นตอนตามสภาพแวดล้อมของคุณ
นี่คือขั้นตอนที่ฉันทำบนเชลล์ใน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เบราว์เซอร์ของคุณเพื่อ เมื่อคุณเห็นภาพหน้าจอคุณทำเสร็จแล้ว การสนทนาสำหรับการตั้งค่าล่วงหน้าเพิ่มเติมสามารถดูได้ที่นี่และที่นี่ที่นี่


3

มีโครงการโอเพนซอร์สมากมายที่สามารถสร้างภาพหน้าจอได้ ตัวอย่างเช่น PhantomJS, webkit2png เป็นต้น

ปัญหาใหญ่ของโครงการเหล่านี้คือพวกเขาใช้เทคโนโลยีเบราว์เซอร์รุ่นเก่าและมีปัญหาในการแสดงผลเว็บไซต์จำนวนมากโดยเฉพาะไซต์ที่ใช้ webfonts, flexbox, svg และส่วนเพิ่มเติมอื่น ๆ ในข้อมูลจำเพาะ HTML5 และ CSS ในช่วงสองสามเดือน / ปีที่ผ่านมา

ฉันได้ลองใช้บริการของบุคคลที่สามแล้วและส่วนใหญ่ใช้ PhantomJS ซึ่งหมายความว่าพวกเขายังผลิตภาพหน้าจอที่มีคุณภาพต่ำ บริการที่ดีที่สุดของบุคคลที่สามสำหรับการสร้างภาพหน้าจอเว็บไซต์เป็น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" />

ตัวอย่างเช่นนี่คือภาพหน้าจอเต็มความสูงของหน้านี้:

https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F757675%2Fwebsite-screenshots-using-php% 2F43652083% 2343652083 & full_page = true

สกรีนช็อตเต็มหน้าของคำถาม stackoverflow.com ขับเคลื่อนโดย urlbox.io


3

มีตัวเลือกมากมายและพวกเขาล้วนมีข้อดีและข้อเสีย นี่คือรายการตัวเลือกที่เรียงลำดับตามความยากในการใช้งาน

ตัวเลือกที่ 1: ใช้ API (ที่ง่ายที่สุด)

  • ApiFlash (ขึ้นอยู่กับโครเมี่ยม)
  • EvoPDF (มีตัวเลือกสำหรับ html)
  • Grabzit
  • ...

ข้อดี

  • ดำเนินการ Javascript
  • ใกล้เคียงการเรนเดอร์ที่สมบูรณ์แบบ
  • เร็วเมื่อใช้ตัวเลือกแคชอย่างถูกต้อง
  • สเกลถูกจัดการโดย API
  • เวลาที่แม่นยำ, วิวพอร์ต, ...
  • ส่วนใหญ่พวกเขาเสนอแผนฟรี

จุดด้อย

  • ไม่ฟรีถ้าคุณวางแผนที่จะใช้พวกเขามาก

ตัวเลือก 2: ใช้หนึ่งในไลบรารีที่มีอยู่มากมาย

ข้อดี

  • การแปลงค่อนข้างเร็วเวลาส่วนใหญ่

จุดด้อย

  • การเรนเดอร์ไม่ถูกต้อง
  • ห้ามเรียกใช้จาวาสคริปต์
  • ไม่รองรับคุณสมบัติเว็บล่าสุด (FlexBox, ตัวเลือกขั้นสูง, Webfonts, การปรับขนาดกล่อง, Media Queries, แท็ก HTML5 ... )
  • บางครั้งไม่ง่ายต่อการติดตั้ง
  • ซับซ้อนยิ่งขึ้น

ตัวเลือก 3: ใช้ PhantomJs และอาจเป็น wrapper library

ข้อดี

  • ดำเนินการ Javascript
  • ค่อนข้างเร็ว

จุดด้อย

  • การเรนเดอร์ไม่ถูกต้อง
  • PhantomJs เลิกใช้แล้วและไม่ได้รับการบำรุงรักษาอีกต่อไป
  • ไม่รองรับคุณสมบัติเว็บล่าสุด (FlexBox, ตัวเลือกขั้นสูง, Webfonts, การปรับขนาดกล่อง, Media Queries, แท็ก HTML5 ... )
  • ซับซ้อนยิ่งขึ้น
  • ไม่ใช่เรื่องง่ายที่จะทำให้มันทำงานถ้ามีภาพที่จะโหลด ...

ตัวเลือก 4: ใช้ Chrome Headless และอาจเป็นไลบรารีของ wrapper

ข้อดี

  • ดำเนินการ Javascript
  • ใกล้เคียงการเรนเดอร์ที่สมบูรณ์แบบ

จุดด้อย

  • ไม่ใช่เรื่องง่ายที่จะมีผลลัพธ์ที่ต้องการอย่างแท้จริงเกี่ยวกับ:
    • เวลาโหลดหน้า
    • การรวมพร็อกซี
    • เลื่อนอัตโนมัติ
    • ...
  • ซับซ้อนยิ่งขึ้น
  • ค่อนข้างช้าและช้าลงหาก html มีลิงก์ภายนอก

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้ก่อตั้ง ApiFlash ฉันทำอย่างดีที่สุดเพื่อให้คำตอบที่ซื่อสัตย์และมีประโยชน์


2

ฉันใช้ Windows ดังนั้นฉันจึงสามารถใช้ฟังก์ชั่น imagegrabwindow ได้หลังจากอ่านเคล็ดลับที่นี่จากสเตฟาน ฉันเพิ่มในการครอบตัด (เพื่อกำจัดส่วนหัวของเบราว์เซอร์แถบเลื่อน ฯลฯ ) และปรับขนาดเพื่อให้ได้ภาพสุดท้าย นี่คือรหัสของฉัน หวังว่าจะช่วยใครซักคน


1

webkit2html ทำงานบน Mac OS X และ Linux ค่อนข้างง่ายในการติดตั้งและใช้งาน ดูบทช่วยสอนนี้นี้

สำหรับ Windows คุณสามารถไปกับCutyCaptซึ่งมีฟังก์ชั่นที่คล้ายกัน


2
@Smith: ครั้งสุดท้ายที่ฉันตรวจสอบ CutyCapt มีการอ้างอิงทั้งหมดในโปรแกรมติดตั้ง ใช่คุณอาจจะไม่สามารถติดตั้งสิ่งนี้ภายใต้บัญชีที่ จำกัด แต่นั่นคือชีวิต โปรดทราบว่าโซลูชันอื่น ๆ ทั้งหมดใช้ wrapper บางชนิดรอบแกนการเรนเดอร์ดังนั้นคุณจึงอยู่ในจุดเดียวกันกับพวกมัน
Piskvor ออกจากอาคาร

1

ผมใช้bluga API ช่วยให้คุณสามารถถ่ายภาพได้ 100 ครั้งต่อเดือนโดยไม่ต้องจ่าย แต่บางครั้งก็ใช้เครดิตมากกว่า 1 หน้าสำหรับหน้าเดียว ฉันเพิ่งอัพเกรดโมดูล drupal เสร็จสิ้นBluga WebThumbsเป็น drupal 7 ซึ่งอนุญาตให้คุณพิมพ์รูปย่อในเทมเพลตหรือตัวกรองอินพุต

ข้อได้เปรียบหลักของการใช้ api นี้คือช่วยให้คุณสามารถระบุขนาดเบราว์เซอร์ในกรณีที่คุณใช้ css ที่ปรับตัวได้ดังนั้นฉันจึงใช้มันเพื่อรับการเรนเดอร์สำหรับเลย์เอาต์มือถือและแท็บเล็ต

มีลูกค้า API สำหรับภาษาต่อไปนี้:

PHP , Python , Ruby , Java , .Net C # , Perl และBash (เชลล์สคริปต์ดูเหมือนว่าต้องใช้ Perl)


1

ทุกอย่างขึ้นอยู่กับวิธีที่คุณต้องการถ่ายภาพหน้าจอ

คุณสามารถทำได้ผ่าน PHP โดยใช้เว็บเซอร์เพื่อรับภาพให้คุณ

grabz.it มีเว็บเซอร์วิซให้ทำเช่นนี้ต่อไปนี้เป็นบทความที่แสดงตัวอย่างง่ายๆของการใช้บริการ

http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html


1

คุณสามารถใช้วิธีแก้ปัญหาhttps://grabz.it

มันมี PHP API ซึ่งมีความยืดหยุ่นสูงและสามารถเรียกได้หลายวิธีเช่นจาก cronjob หรือเว็บเพจ PHP

ในการใช้งานคุณจะต้องได้รับรหัสแอปและความลับและดาวน์โหลดก่อน SDK (ฟรี)

และเป็นตัวอย่างสำหรับการนำไปใช้ การเริ่มต้นครั้งแรกของทั้งหมด:

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ถ้าไม่ ตรวจสอบเอกสารสำหรับรายละเอียด


หากคุณกำลังมองหาภาพหน้าจอแบบเต็มหน้าจอผู้ให้บริการนี้ต้องสมัครสมาชิกระดับมืออาชีพ ($ 170 / ปี)
chaoskreator

1

ฉันเขียนแอปที่รวดเร็วและสกปรกเมื่อวันก่อนโดยใช้ Google API ขอบเขตแน่นอนที่สุดสำหรับการปรับปรุง ...

  • ใช้ Google API เวอร์ชัน 5 ล่าสุด
  • ขนาดภาพตอนนี้กว้าง 500px
  • รองรับมุมมองเดสก์ทอปและมือถือ
  • บันทึกลงไฟล์ในโฟลเดอร์ที่ระบุ
  • รวมระบบแคชพื้นฐาน

หาได้ที่นี่มีการสาธิตสดและรหัส

ฉันไม่ได้โพสต์รหัสที่นี่เพียงเพราะฉันปรับแต่งและหวังว่าเมื่อฉันมีเวลาแปลงเป็นคลาสที่เหมาะสม


0

ผมใช้page2images มันได้รับการพัฒนาบนฐานของ cutycapt ที่เร็วและเสถียรจริงๆ หากคุณไม่ต้องการใช้เวลากับประสิทธิภาพและการกำหนดค่ามากเกินไปคุณควรใช้มัน หากคุณไปที่เว็บไซต์ของพวกเขาคุณสามารถค้นหารายละเอียดเพิ่มเติมและตัวอย่างโค้ด PHP


0

หลังจากการท่องเว็บฉันพบสิ่งนี้มากมาย

PPTRAAS > เครื่องมือฟรีในการจับภาพหน้าจอโดยส่ง URL ของคุณเป็นพารามิเตอร์

พวกเขามีหลายตัวเลือกเพียงแค่กดปุ่ม URL

  1. รับภาพหน้าจอแบบเต็ม

    https://pptraas.com/sc Screenshot?url= {YOU URL ที่นี่}

  2. รับภาพหน้าจอหน้าเว็บที่มีขนาดเฉพาะ

    https://pptraas.com/scurrency?url= {YOU URL ที่นี่} & size = 400,400

  3. หนึ่งสามารถแปลงหน้าเป็น pdf

    https://pptraas.com/pdf?url= {YOU URL ที่นี่}


จอชเมื่อฉันอัปโหลดคำตอบก็ใช้ในการทำงานได้ดีผมคิดว่าเราไม่สามารถจะขึ้นอยู่กับ URL นี้โปรดดูอีกทางเลือกหนึ่งที่พวกเขาอาจจะมีการหยุดให้บริการสำหรับตอนนี้
Fenil ชาห์

0

คุณสามารถทำ 2 สิ่ง

ใช้ Puppeteer

คุณสามารถใช้แพ็คเกจ PHP Puppeteer ได้เพื่อหมุนเบราว์เซอร์และจับภาพหน้าจอ

ใช้ API

มี API สกรีนช็อตจำนวนมาก คุณสามารถดูScreenshotAPI.netเป็นตัวอย่างได้ (ข้อจำกัดความรับผิดชอบฉันเป็นผู้สร้างของ API นั้น)


-1

ไม่ได้โดยตรง ซอฟต์แวร์เช่น Selenium มีคุณสมบัติเช่นนี้และสามารถควบคุมโดย PHP แต่มีการพึ่งพาอื่น ๆ (เช่นการใช้เซิร์ฟเวอร์ java-based บนคอมพิวเตอร์ด้วยเบราว์เซอร์ที่คุณต้องการจับภาพหน้าจอ)


ตอนนี้มีห้องสมุด PHP มากมายให้เลือกใช้ ไม่ใช่ไลบรารี 'PHP' เกี่ยวข้องกับเบราว์เซอร์ js และรหัสบางอย่าง
Gijo Varghese


-1

ฉันได้พบนี้จะเป็นสิ่งที่ดีที่สุดและง่ายที่สุดในรอบเครื่องมือ: ScreenShotMachine มันเป็นบริการแบบชำระเงิน แต่คุณจะได้ภาพหน้าจอฟรี 100 ภาพและคุณสามารถซื้ออีก 2,000 รายการ (ประมาณ) $ 20 ดังนั้นมันจึงเป็นข้อเสนอที่ดีทีเดียว มันมีการใช้งานที่ง่ายมากคุณเพียงแค่ใช้ 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!");
?>

พวกเขามีเอกสารที่ดีมากที่นี่ดังนั้นคุณควรดูแน่นอน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.