web-dev-qa-db-ja.com

介入\画像\例外\ NotReadableException using laravel 4

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 packagefollowing公式サイト image.intervention.io/getting_started/installation(url)。

ファイルを"読み取り可能"?にするか、このエラーを解決するにはどうすればよいですか?

8
french_dev

これを変える:

$file = Image::make('url_Avatar');

これに:

$file = Input::file('url_Avatar');
// ...
$filename = '...';
Image::make($file->getRealPath())->resize('200','200')->save($filename);

ファイルLaravelドキュメント についてもっと読む。

15
The Alpha

私も同じ問題を抱えてる。イメージドライバを変更すると、すべて正常に動作します。

イメージドライバーをapp/config/packages/intervention/image /config.phpからGdからImagickに変更してみてください

設定ファイルが見つからない場合は、以下のコマンドを実行してみてください。

構成を公開するLaravel 5

$ php職人ベンダー:publish--provider = "Intervention\Image\ImageServiceProviderLaravel5"

構成をLaravel 4で公開する

$ php artisan config:publishintervention/image

設定ファイルのコンテンツの例:

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'

);
1
nikssa23

これをソリューションで

$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);
0
Mas Hary

パブリックパスでサブフォルダーを使用する場合は、chmodを使用してそのフォルダーの権限を変更します(例:cd public; chmod -Rv 755 public/{your_path_name};

実行

man chmod;

詳細については

0
Jon Awoyele