使用Vagrant和Homestead運行Laraval 5.4。使用帶有圖像干預畫布的laravel存儲()
看到關於此問題的其他一些問題,但沒有提供它通過干預/圖片使用canvas()方法
Laravel推出了easier storage system since 5.3
我當前的代碼的解決方案:
$path = $request->file('logo')->store('/clients/logos','public');
$canvas = Image::canvas($width, $height);
$image = Image::make($path)->resize($width, $height, function ($constraint)
{
$constraint->aspectRatio();
});
$canvas->insert($image, 'center');
$canvas->save($path);
$this->logo_path = $path;
這代碼創建一個畫布並在其中放置一個調整大小的圖像。
此代碼提供了以下錯誤:
NotReadableException in AbstractDecoder.php line 335: Image source not readable in AbstractDecoder.php line 335 at AbstractDecoder->init('clients/logos/UupUn1iuDGRsy5Z0bkWHJ6S4v79bfZiXapTO7vLk.jpeg') in AbstractDriver.php line 64
第一線工作,因爲圖像是在以下位置存儲在我的存儲文件夾中:
「/存儲/程序/公/客戶/徽標/ UupUn1iuDGRsy5Z0bkWHJ6S4v79bfZiXapTO7vLk.jpeg「
但圖像以全尺寸存儲,因此代碼在圖像干涉部分失敗。
事情我嘗試: 我試圖改變$path
變量中圖片::使()這樣的:
Storage::disk('public')->url($path)
這將導致以下錯誤: 不能圖像數據寫入路徑
(http://test.dev/storage/clients/logos/owjNA5Fn9QyYoS0i84UgysaFLo5v0NzbOiBhBzXp.jpeg)
關於該錯誤的奇怪部分是'app'目錄在該錯誤內部不可見。
我想盡辦法解決這個問題。
編輯
得到它的工作,而無需使用帆布,但仍想知道的方式來使用畫布()
這是我目前如何得到它的工作:
$path = $logo->hashName('public/clients/logos');
$image = Image::make($logo);
$image->resize($width, $height, function ($constraint)
{
$constraint->aspectRatio();
});
Storage::put($path, (string) $image->encode(), 'public');
$this->logo_path = $path;
檢索圖片
{{Storage::url($client->logo_path)}}
我相信這是一個文件權限問題。嘗試使用特權用戶設置存儲。 –
圖像保存在存儲文件夾內,只是調整了大小。所以它可以寫入文件夾。我試圖將其設置爲777,但也沒有解決問題 – Christophvh
我猜這是因爲'$ path'變量。檢查它在這裏:[Refence#1](http://stackoverflow.com/questions/33468437/getting-error-notreadableexception-in-abstractdecoder-php-line-302/33469360#33469360)或者你可以試試這個人做了什麼在[參考#2]中(http://stackoverflow.com/questions/41990023/how-to-save-uploaded-image-to-storage-in-laravel)。祝你好運。 –