使用 laravel 将裁剪后的图像保存在 public/uploads 文件夹中
Posted
技术标签:
【中文标题】使用 laravel 将裁剪后的图像保存在 public/uploads 文件夹中【英文标题】:Save cropped image in the public/uploads folder with laravel 【发布时间】:2019-08-05 13:17:13 【问题描述】:我正在尝试将裁剪的图像上传到 laravel 中的 public/uploads 文件夹。 我能够将图像路径保存到数据库,但我无法将裁剪后的图像保存到 public/uploads 文件夹。
这就是我的代码的样子:
$slideshow = \App\Slideshow::find($id);
//This is the path to the image that's in the database.
$pieces = explode("/", $slideshow->image);
$image = $pieces[0]. "/public/". $pieces[1]. "/". $pieces[2];
$new_image = $pieces[0]. "/public/". $pieces[1]. "/". $pieces[2];
$image_quality = '95';
list( $current_width, $current_height ) = getimagesize($new_image);
//This is the data that gets send from the blade form
$x1 = $request->input('x1');
$y1 = $request->input('y1');
$x2 = $request->input('x2');
$y2 = $request->input('y2');
$width = $request->input('width');
$height = $request->input('height');
//This function is cropping the image
$crop_width = 50;
$crop_height = 50;
$new = imagecreatetruecolor( $crop_width, $crop_height );
$current_image = imagecreatefromjpeg( $new_image );
imagecopyresampled( $new, $current_image, 0, 0, $x1, $y1, $crop_width, $crop_height, $width, $height );
imagejpeg( $new, $new_image, $image_quality );
$final_image = imagejpeg( $new, $new_image, $image_quality );
if($final_image == true)
$image = 'uploads/' . $image['image'];
$final_image = 'uploads/crop_'. $pieces[2];
$destination = '../uploads/';
$complete = $destination.$final_image;
$slideshow->cropped_image = $complete;
$slideshow->save();
Storage::copy($image, $final_image);
dd(Storage::copy($image, $final_image));
return redirect()->back();
else
dd('Doesn't work');
在裁剪功能之后,我尝试将裁剪后的图像放入变量中,然后将图像放入 public/uploads 文件夹中。
【问题讨论】:
欢迎来到 Stack Overflow! :) 我认为this question 可能有一些对您有所帮助的答案。我相信 Laravel 的Storage
门面默认将文件存储在 storage/app
目录中。
【参考方案1】:
我真的建议使用图像干预包,它在此类实现中非常方便和干净。
安装见here,非常简单。
然后进行裁剪,您可以轻松使用包的crop 功能:
<?php
$originalImagePath = '//your_image_path'
$x = $request->input('x');
$y = $request->input('y');
$width = $request->input('width');
$height = $request->input('height');
$croppedImage = Image::make($originalImagePath);
$croppedImage->crop($width, $height, $x, $y);
$croppedImage->save('//new_path_here');
【讨论】:
以上是关于使用 laravel 将裁剪后的图像保存在 public/uploads 文件夹中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 将裁剪后的图像保存到带有 Jcrop 的目录