干预图像:直接从具有原始文件名和分机号的URL保存图像?

时间:2015-09-28 17:26:53

标签: php laravel intervention cakephp-3.1

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

// 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(),我也可以使用CakePHP文件实用程序,但它给了我远程文件的重复请求。

3 个答案:

答案 0 :(得分:22)

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

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

Image::make($path)->save(public_path('images/' . $filename));

答案 1 :(得分:3)

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

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

这将显示我的个人资料照片。如果您不使用 Laravel Framework ,只需将return替换为echo

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

希望在有用的情况下帮助并提升我的回复;)

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

答案 2 :(得分: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));