php - 我想用干预/图像调整照片的大小
问题描述
我想调整我使用干预/图像上传的图像的大小,但我不知道如何。
我尝试了几种上传调整大小的方法,但我不知道如何使它工作。函数 storeImage 是我要调整大小的地方。
家庭控制器.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Intervention\Image\ImageManager;
use Intervention\Image\Facades\Image;
class HomeController extends Controller
{
public function update(User $user){
$user = auth()->user();
$user-> name = request('name');
$user-> phone = request('phone');
$user-> image = request('image');
$oldFilename = $user->image;
$this->storeImage($user);
File::delete(public_path('images'),$oldFilename);
$imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief','jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];
$foo = \File::extension($user->image);
if(in_array($foo, $imageExtensions))
{
$user->save();
}
return redirect('user/account');
}
private function storeImage($user){
if(request()->has('image')){
$user->image = $user->email.'.'.request()->image->getClientOriginalExtension();
$imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief','jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];
$foo = \File::extension($user->image);
if(in_array($foo, $imageExtensions))
{
$file = request()->image;
$img = Image::make($file->getRealPath())->resize(320, 240);
$img->move(public_path('images'), $user->image);
}
}
}
}
它向我抛出了错误:
命令 (Move) 不适用于驱动程序 (Gd)。
我用保存解决了它
$img->save(public_path('images'.$user->image));
但它不会将图像移动到文件夹中。我该如何解决?谢谢
解决方案
根据干预图像的文档,您需要save()
调用move()
:
private function storeImage($user)
{
if (request()->has('image')) {
$user->image = $user->email . '.' . request()->image->getClientOriginalExtension();
$imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief', 'jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];
$foo = \File::extension($user->image);
if (in_array($foo, $imageExtensions)) {
$img = Image::make(request()->image)
->resize(320, 240)
->save('images/' . $user->image);
}
}
}
推荐阅读
- r - 如果列值满足条件如何在循环的帮助下在 r 编程中打印整行?
- graphql - 未知类型的 Strapi/Gatsby Graphql 查询片段
- makefile - 我无法使 Makefile ifeq 语法正常工作(检查文件的年龄)
- python - 如何创建一个列表,然后按升序打印
- react-native - 在 React Native 中登录成功时如何导航仪表板?
- android - TextView 监控值
- python - 如何从 Python 中的 N(80, σ=15) 分布生成 200 个大小为 10 的随机子组
- html - Mathjax - \eqref 命令切断方程的顶部
- java - Java Hibernate Search Like Query - 注入保护 - 参数绑定?
- python - curl json 与 python 到 php