Php Laravel干预/图像大小调整返回null。拉维尔5号
我想不出来。当我像这样调整上传图像的大小时Php Laravel干预/图像大小调整返回null。拉维尔5号,php,laravel,laravel-5,intervention,Php,Laravel,Laravel 5,Intervention,我想不出来。当我像这样调整上传图像的大小时 public function up(Request $request) { $user = $request->user(); $image= $request->file('images'); if(!empty(($image))){ $files = Input::file('images'); foreach($files as $file) {
public function up(Request $request) {
$user = $request->user();
$image= $request->file('images');
if(!empty(($image))){
$files = Input::file('images');
foreach($files as $file) {
if(!empty($file)){
$new_file = Image::make($file)->resize(200,200);
var_dump($new_file);exit;
var_dump返回以下内容:
object(Intervention\Image\Image)#241 (9) {
object(Intervention\Image\Imagick\Driver)#242 (2) {
["decoder"] object(Intervention\Image\Imagick\Decoder)#243 (1) {
}
["encoder"] object(Intervention\Image\Imagick\Encoder)#244 (4) {
["result"] NULL
["image"] NULL
["format"] NULL
["quality"] NULL
}
}
object(Imagick)#237 (0) {
}
["backups":protected] array(0) {
}
["encoded"] ""
["mime"] "image/jpeg"
["dirname"] "/Applications/MAMP/tmp/php"
["basename"] "phpJcAyxV"
["extension"] NULL
["filename"] "phpJcAyxV"
}
结果、图像、格式、质量均为空。我错过了什么
更新这是HTML:
{!! Form::open(array('action'=>'FileController@up','files'=>true,))!!}
<div class='row'>
<div class='col-md-2'>
{!! Form::label('images','Profile Picture')!!}
</div>
<div class='col-md-2 profile-pic'>
@if(isset($pic))
<img src='{{$pic}}'/>
@else
<img src='/images/user-icon.jpg'/>
@endif
</div>
<div class='col-md-6'>
{!! Form::file('images[]') !!}
{!! Form::hidden('category','profile')!!}
{!! Form::submit('Upload',['class'=>'form-control btn btn-md btn-info','style'=>'width:100px; margin-top:50px;'])!!}
</div>
</div>
{!! Form::close()!!}
{!!Form::open(数组('action'=>)FileController@up','files'=>true,)
{!!Form::label('images','Profile Picture')
@如果(isset($pic))
@否则
@恩迪夫
{!!Form::file('images[])
{!!Form::hidden('category','profile')
{!!Form::submit('Upload',['class'=>'Form-control btn btn md btn info','style'=>'宽度:100px;页边空白顶部:50px;'])
{!!Form::close()!!}
也许我不应该使用数组?好的,所以我仔细研究了你的问题。编码器值为空,因为您尚未设置它们。我猜你没有计划对它们进行编码。你仍然有一张照片。您的服务器已成功接收到它。这只是意味着你没有对它进行编码 此外,在本规范中:
public function up(Request $request) {
$user = $request->user();
$image= $request->file('images');
if(!empty(($image))) {
$files = Input::file('images');
您不需要使用输入
门面来获取图像,因为您在执行$request->file('images')时已经获得了所有图像代码>
换句话说,Input::file('images')
与$request->file('images')
完全相同
另外,我认为使用hasFile
方法更具可读性,而不是检查它是否为空,因此我认为这样的方法更具可读性:
public function up(Request $request) {
$user = $request->user();
if($request->hasFile('images')) {
$files = $request->file('images');
总的来说,它只是:
public function up(Request $request) {
$user = $request->user();
if($request->hasFile('images')) {
$files = $request->file('images');
foreach ($files as $file) {
$new_file = Image::make($file)->resize(200,200);
}
}
}
同样,当您dd($new_file)
编码器属性仍然为false,但您仍然有一个图像。例如,如果返回$new_file->response()代码>,您应该可以看到您设置的新大小的图像
如果确实要对图像进行编码,干预图像包提供了一种encode
方法
$new_file = Image::make($file)->resize(200,200)->encode();
出于某种原因,这对我来说很有用:
我在文件系统中有一个当前映像,我正在旋转,但什么也没发生,我从GoogleDevOptions签入源代码,看到了与您相同的错误
object(Intervention\Image\Image)#716 (9) {
["driver":protected]=>
object(Intervention\Image\Gd\Driver)#718 (2) {
["decoder"]=>
object(Intervention\Image\Gd\Decoder)#719 (1) {
["data":"Intervention\Image\AbstractDecoder":private]=>
NULL
}
["encoder"]=>
object(Intervention\Image\Gd\Encoder)#720 (4) {
["result"]=>
NULL
["image"]=>
NULL
["format"]=>
NULL
["quality"]=>
NULL
}
}
在控制器中:
public function rotatePhoto($id)
{
$photo = BookPublicationPhoto::find($id);
$image_url = storage_path().'/cache/img/publication/'.$photo->published_book_id.'/'.$photo->image_file_name;
$img = Image::make($image_url);
// rotate image 90 degrees clockwise
$img->rotate(-45);
var_dump($img);
$response['mensaje'] = "No tienes los permisos para eliminar ésta foto";
}
解决方案是add$img->save()代码>在$img->旋转(-45)之后代码>动作(旋转、调整大小..)
您要传入多个文件吗?你也可以发布你的HTML吗?因为我可以看到一些您可以修复的东西,但这取决于您向服务器发送的内容。我只传入一个文件,但我还是使用了一个数组。我有另一个表单,实际上一次上传超过1个文件,所以我想知道如何将它们调整为数组对象