Я использую laravel 4, и я установил пакет Intervention Image . Когда я использую его в своем коде с методом – > изменить размер, -> перемещать и т. Д. И т. Д. И т. Д. … У меня есть эта ошибка:
Intervention \ Image \ Exception \ NotReadableException
Источник изображения не читается
open: /Applications/MAMP/htdocs/myNameProject/vendor/intervention/image/src/Intervention/Image/AbstractSource.php break; case $this->isFilePath(): return $this->initFromPath($this->data); break; default: throw new Exception\NotReadableException("Image source not readable"); break; }
Я также использую MAMP и Sublime Text 3 на MAC OS, если это может вам помочь.
Это мой код в моем контроллере:
public function upload() { //***** UPLOAD FILE (on server it's an image but an Url in Database *****// // get the input file $file = Image::make('url_Avatar'); //set a register path to the uploaded file $destinationPath = public_path().'upload/'; //have client extension loaded file and set a random name to the uploaded file, produce a random string of length 32 made up of alphanumeric characters [a-zA-z0-9] $filename = $destinationPath . '' . str_random(32) . '.' . $file->getClientOriginalExtension(); //$file->move($destinationPath,$filename); //set $file in order to resize the format and save as an url in database $file= Image::make($image->getRealPath())->resize('200','200')->save('upload/'.$filename); //*****VALIDATORS INPUTS and RULES***** $inputs = Input::all(); $rules = array( 'pseudo' => 'required|between:1,64|unique:profile,pseudo', //urlAvatar is an url in database but we register as an image on the server 'url_Avatar' => 'required|image|min:1', );
(Я не показываю вам перенаправление моего представления, но он отлично работает для этого раздела моего контроллера)
вот мой код формы (с использованием шаблона laravel для лезвий):
@extends('layout.default') @section('title') Name Of My Project - EditProfile @stop @section('content') {{Form::open(array('url'=>'uploadAvatar','files' => true))}} <p> {{Form::label('pseudo','pseudo (*): ')}} {{Form::text('pseudo',Input::old('nom'))}} </p> @if ($errors->has('pseudo')) <p class='error'> {{ $errors->first('pseudo')}}</p> @endif <br> <br> <p> {{Form::label('url_Avatar','Avatar: ')}} {{Form::file('url_Avatar',Input::old('Url_Avatar'))}} </p> @if ($errors->has('url_Avatar')) <p class='error'> {{ $errors->first('url_Avatar')}}</p> @endif <br> <br> <p> {{Form::submit('Validate your avatar')}} </p> {{Form::close()}} @stop
Конечно, я установил пакет Intervention Image после официального сайта image.intervention.io/getting_started/installation (url).
Как я могу сделать файл «удобочитаемым»? или устранить эту ошибку?
Измените это:
$file = Image::make('url_Avatar');
К этому:
$file = Input::file('url_Avatar'); // ... $filename = '...'; Image::make($file->getRealPath())->resize('200','200')->save($filename);
Подробнее о файле в документации Laravel .
если вы используете подпапку в своем общедоступном пути, используйте chmod для изменения разрешения в этой папке, например, cd public; chmod -Rv 755 public/{your_path_name};
cd public; chmod -Rv 755 public/{your_path_name};
Бег
man chmod;
Больше подробностей
это в решении
$filename = str_slug($products->name)."-0.jpg"; $filename_fb = 'fb-'.$filename; $filename_tw = 'tw-'.$filename; $img = Image::make($_FILES['photo']['tmp_name']); // resize image $img->resize(800, 400); // save image $img->save($path.'/'.$filename);
У меня такая же проблема. Когда я меняю драйвер изображений, все работает нормально.
Попробуйте изменить драйвер изображения из приложения / config / packages / вмешательства / image / config.php с GD на Imagick
Если вы не можете найти файл конфигурации, попробуйте выполнить следующие команды:
Опубликовать конфигурацию в Laravel 5
$ php artisan vendor: опубликуйте –provider = "Intervention \ Image \ ImageServiceProviderLaravel5"
Опубликовать конфигурацию в Laravel 4
$ php artisan config: опубликовать интервенцию / изображение
Пример содержимого из файла конфигурации:
return array( /* |-------------------------------------------------------------------------- | Image Driver |-------------------------------------------------------------------------- | | Intervention Image supports "GD Library" and "Imagick" to process images | internally. You may choose one of them according to your PHP | configuration. By default PHP's "GD Library" implementation is used. | | Supported: "gd", "imagick" | */ 'driver' => 'imagick' );