我正在尝试使用 Intervention
打开图像use Intervention\Image\ImageManagerStatic as Image;
$image = Image::make('https://via.placeholder.com/300/09f/fff.png');
但是转储它时,只返回 null。
如果我添加实际图像
dd(file_get_contents('https://via.placeholder.com/300/09f/fff.png'));
我明白了
b"ëPNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01,\x00\x00\x01,\x04\x03\x00\x00\x00ïSôF\x00\x00\x00\ePLTE\x00Ö ▀‗ ƒÏ \x1FÑ \x7F╠ ┐Õ _┐ ?▓ ¹\\t\r\x00\x00\x03¸IDATx ▶"
我已经尝试过了
$image = Image::make(file_get_contents('https://via.placeholder.com/300/09f/fff.png'));
但是 dd($image) 也返回 null。
我也尝试过
private function get_content($URL){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $URL);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$image = Image::make($this->get_content('https://via.placeholder.com/300/09f/fff.png'));
dd($image) 也返回 null。
您对如何使用此库打开图像有什么想法吗?我正在使用 Lumen,并尝试使用 Docker 和 php artisanserve 来运行它。
这和Composer有什么关系吗?
更新
我也想知道是否是司机的原因。 Gd 是图像干预的默认值。我确保在 php.ini 中启用了 imagick 并尝试了 gd (默认)和 imagick 作为驱动程序
Image::configure(['driver' => 'imagick']);
但是 dd($image) 保持为空。
此外,检查 storage/logs/laravel.log 没有显示任何内容。
最终更新
解决方案原来与composer有关。我删除了composer.lock和供应商内容并执行了全新的composer安装,$image现在显示了所需的数据。
Image::make(file_get_contents('https://via.placeholder.com/300/09f/fff.png')
返回 Image
对象。
因此您可以使用
->response()
返回图像。
use Intervention\Image\ImageManagerStatic as Image;
Route::get('/test', function() {
return Image::make(file_get_contents('https://via.placeholder.com/300/09f/fff.png'))->response();
});
在 2.0 版本中,您可以使用 ->response() 函数返回图像干预对象,但该函数在 3.0 版本中不可用。 3.0版本中的等效功能是什么?