如何通过干预打开 URL 上的图像

问题描述 投票:0回答:2

我正在尝试使用 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现在显示了所需的数据。

php lumen intervention
2个回答
1
投票

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();
});

0
投票

在 2.0 版本中,您可以使用 ->response() 函数返回图像干预对象,但该函数在 3.0 版本中不可用。 3.0版本中的等效功能是什么?

© www.soinside.com 2019 - 2024. All rights reserved.