【问题标题】:Image resize Laravel图像大小调整 Laravel
【发布时间】:2019-02-25 14:19:34
【问题描述】:

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

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

我的密码:

account.blade.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 Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;

    public function posts()
    {
        return $this->hasMany('App\Post');
    }

    public function likes()
    {
        return $this->hasMany('App\Like');
    }
}

【问题讨论】:

标签: php laravel image resize image-resizing


【解决方案1】:

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

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']);
}

【讨论】:

    【解决方案2】:

    这里是使用composer的干预安装(自动检测版本)

    composer require intervention/image
    

    关于调整图片大小

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

    示例:这是在我的控制器方法中

    /* TOP OF THE FILE */
    use Request;
    use Intervention\Image\ImageManagerStatic 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');
    
        }
    }
    

    希望有效。快乐编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-16
      • 2017-03-14
      • 2017-03-28
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多