旋转并在laravel中保存照片

时间:2019-05-27 05:37:39

标签: php laravel image

我想在服务器中上传照片。但在此之前,我想旋转该图像。 我的代码如下所示,

    $photo = $request->file($field);
    $temp = imagecreatefromjpeg($photo);
    $rotated = imagerotate($temp, 270, 0);
    $extension = $photo->getClientOriginalExtension();
    $flieNametoStore = time()."___".explode('.',$photo->getClientOriginalName())[0].'.'.$extension;
    Storage::disk('public')->put($flieNametoStore,  $rotated); 

它不起作用。它显示类似supplied resource is not a valid stream resource的错误。 我也尝试了Storage::disk('public')->put($flieNametoStore, File::get($rotated));,但仍然无法正常工作。

所以,我有两个问题。 我该怎么做才能实现自己的目标? (旋转并保存在服务器中。) 另外,我使用了imagecreatefromjpeg函数。但是,我想对其他文件类型执行相同的代码。(laravel图像验证支持的所有类型。)

我在SO中进行搜索,发现了一些类似的问题。但是,这些解决方案并没有给我我想要的输出。

1 个答案:

答案 0 :(得分:1)

使用imagejpeg功能保存照片

imagerotate返回gd资源类型而不是资源...

$photo           = request()->file($field);
$temp            = imagecreatefromjpeg($photo);
$rotated         = imagerotate($temp, 270, 0);
$extension       = $photo->getClientOriginalExtension();
$flieNametoStore = time() . "___" . explode('.', $photo->getClientOriginalName())[0] . '.' . $extension;
imagejpeg($rotated,  $flieNametoStore);

ob_start();
imagejpeg($rotated);
$rotated = ob_get_contents();
ob_clean();
Storage::disk('public')->put($flieNametoStore, $rotated);