From a696409927637c739674e202b1ae1a755fd48d9c Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Wed, 17 Apr 2024 14:49:46 +0200 Subject: [PATCH] Directly converts screenshot to jpeg --- app/Services/Browser.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/Services/Browser.php b/app/Services/Browser.php index 000b00c..a137f9c 100644 --- a/app/Services/Browser.php +++ b/app/Services/Browser.php @@ -11,6 +11,7 @@ use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\WebDriverBy; use Illuminate\Support\Str; +use Intervention\Image\Laravel\Facades\Image; use Laravel\Dusk\Browser as DuskBrowser; use Laravel\Dusk\Chrome\SupportsChrome; use Laravel\Dusk\Concerns\ProvidesBrowser; @@ -74,18 +75,24 @@ public function dataname() } /** - * Return screenshot content as a PNG resource + * Return screenshot content as a jpg resource */ public function getScreenshot() { return $this->screenshot; } + /** + * Return page title + */ public function getTitle() { return $this->title; } + /** + * Return page description, if any is found + */ public function getDescription() { return $this->description; @@ -144,7 +151,7 @@ private function handleNavigation(DuskBrowser $browser) ->visit($this->url) ->pause(1000); - $this->screenshot = $browser->driver->takeScreenshot(); + $this->screenshot = $this->takeScreenshot($browser); $this->title = $browser->driver->getTitle(); $this->description = $this->findDescription($browser); @@ -163,4 +170,14 @@ private function findDescription(DuskBrowser $browser) return $description; } + + private function takeScreenshot(DuskBrowser $browser) + { + $contents = $browser->driver->takeScreenshot(); + $image = Image::read($contents); + + $this->screenshot = $image->toJpeg(); + + return $this->screenshot; + } }