mime, ['image/png', 'image/jpeg', 'image/jpg', 'video/mp4'])) { return self::DEFAULT_HASH; } if ($media->thumbnail_path == null) { return self::DEFAULT_HASH; } if ($path) { $file = $path; } else { $localFs = config('filesystems.default') === 'local'; $file = storage_path('app/'.$media->thumbnail_path); } if (! is_file($file)) { return self::DEFAULT_HASH; } $image = imagecreatefromstring(file_get_contents($file)); if (! $image) { return self::DEFAULT_HASH; } $width = imagesx($image); $height = imagesy($image); $pixels = []; for ($y = 0; $y < $height; $y++) { $row = []; for ($x = 0; $x < $width; $x++) { $index = imagecolorat($image, $x, $y); $colors = imagecolorsforindex($image, $index); $row[] = [$colors['red'], $colors['green'], $colors['blue']]; } $pixels[] = $row; } imagedestroy($image); $components_x = 4; $components_y = 4; $blurhash = BlurhashEngine::encode($pixels, $components_x, $components_y); if (strlen($blurhash) > 191) { return self::DEFAULT_HASH; } return $blurhash; } }