图像调整拉拉维尔的大小



我有一个关于用 intervention.io 调整Laravel中图像大小的问题(链接:http://image.intervention.io/

我的问题是我不明白如何在代码中输入,有人可以帮助我展示示例吗?提前谢谢你!

我的代码:

帐户刀片.php:

@extends('layouts.master')
@section('title')
Account
@endsection
@section('content')
<section class="row new-post">
<div class="col-md-6 col-md-offset-3">
<header><h3>Your Account</h3></header>
<form action="{{ route('account.save') }}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="first_name">First Name</label>
<input type="text" name="first_name" class="form-control" value="{{ $user->first_name }}" id="first_name">
</div>
<div class="form-group">
<label for="image">Image (only .jpg)</label>
<input type="file" name="image" class="form-control" id="image">
</div>
<button type="submit" class="btn btn-primary">Save Account</button>
<input type="hidden" value="{{ Session::token() }}" name="_token">
</form>
</div>
</section>

@if (Storage::disk('local')->has($user->first_name . '-' . $user->id . '.jpg'))
<section class="row new-post">
<div class="col-md-6 col-md-offset-3">
<img src="{{ route('account.image', ['filename' => $user->first_name . '-' . $user->id . '.jpg']) }}" alt="" class="img-responsive">
</div>
</section>
@endif
@endsection

用户.php:

<?php
namespace App;
use IlluminateContractsAuthAuthenticatable;
use IlluminateDatabaseEloquentModel;
class User extends Model implements Authenticatable
{
use IlluminateAuthAuthenticatable;
public function posts()
{
return $this->hasMany('AppPost');
}
public function likes()
{
return $this->hasMany('AppLike');
}
}

您是否在控制器中编写了必要的函数来处理图像文件? 如果答案是肯定的,那么您只需在 laravel 项目上安装干预图像包,并在该控制器函数中添加用于调整图像大小的代码。上传逻辑后,只需添加必要的行即可在控制器函数中调整图像大小。
是这样的

public function resizeImagePost(Request $request)
{
$this->validate($request, [
'title' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);

$image = $request->file('image');
$input['imagename'] = time().'.'.$image->getClientOriginalExtension();

$destinationPath = public_path('/thumbnail');
$img = Image::make($image->getRealPath());
$img->resize(150, 150, function ($constraint) {
$constraint->aspectRatio();
})->save($destinationPath.'/'.$input['imagename']);

$destinationPath = public_path('/images');
$image->move($destinationPath, $input['imagename']);

$this->postImage->add($input);

return back()
->with('success','Image Upload successful')
->with('imageName',$input['imagename']);
}

这是使用作曲家的干预安装(自动检测版本(

composer require intervention/image

关于调整图像大小

$image = $manager->make('public/foo.jpg')->resize(300, 200);

例:这是我的控制器方法

/* TOP OF THE FILE */
use Request;
use InterventionImageImageManagerStatic as Image;
public someFunctionname(Request $request)
{
if ($request->hasFile('image')) {
$extension = '';
$files = $request->file('image');
$mime = Image::make($files->getRealPath())->mime();
if ($mime == 'image/jpeg') {
$extension = '.jpg';
} elseif ($mime == 'image/png') {
$extension = '.png';
} elseif ($mime == 'image/jpg') {
$extension = '.jpg';
} else {
$extension = '';
}
$originalName = pathinfo($files->getClientOriginalName(), PATHINFO_FILENAME);
$filename = time() . '_' . $originalName . $extension;
$storagePath = public_path('uploads/profileImages/');
if (!File::exists($storagePath)) File::makeDirectory($storagePath, 775);
Image::make($files->getRealPath())->save($storagePath . '/' . $filename, 100)->resize(500, 500);
$savePathInDB = asset('uploads/profileImages/' . $filename);
} else {
$savePathInDB = asset('uploads/demoImages/demoImage.jpg');
}
}

希望有效。快乐编码