18

从远程服务器获取图像时如何获取文件名?以及如何以原始大小和文件名保存?

// Take remote image
$img = Image::make('http://image.info/demo.jpg');
// how to save in the img/original/demo.jpg
$img->save(????);

我使用干预( http://image.intervention.io/api/make ) 来构建 CakePHP 3 图像行为,我想提供从远程服务器轻松上传的功能,并保留原始图像作为未来操作的来源。

编辑

我问,当从远程服务器获取时,是否有返回文件名的干预图像方法。我知道 php copy()、basename(),我也可以使用 CakePHP File 实用程序,但它给了我对远程文件的重复请求。

4

3 回答 3

37

response() 不会像 Salines 请求的那样返回原始文件名。这应该工作

$path = 'https://i.stack.imgur.com/koFpQ.png';
$filename = basename($path);

Image::make($path)->save(public_path('images/' . $filename));
于 2015-09-29T02:07:58.000 回答
4

您可以使用make();response();方法轻松完成。在下面检查我的代码。

请记住,allow_url_fopen必须启用才能获取远程图像。

这将显示我的个人资料图片。如果你没有将它与Laravel 框架一起使用,只需将 return 替换为echo.

$img = Image::make('https://i.stack.imgur.com/koFpQ.png');
header('Content-Type: image/png');
return $img->response();

如果有用,希望对我的回复有所帮助和支持;)

如果您需要进一步的帮助,请询问。

于 2015-09-28T19:44:58.000 回答
0

public首先在名为 的文件夹中创建新文件夹images,然后执行以下代码从 url 下载图像并将其保存在public\images文件夹中

        $url = 'http://example.com/image.png';
        $img = public_path('images') . '\\test.png';
        file_put_contents($img, file_get_contents($url));
    
于 2020-11-08T13:07:29.177 回答