tinkeśwar/imager

这是一个Laravel扩展包,可以实时从现有图像创建任何所需大小的缩略图。

2.3.12 2022-05-26 11:24 UTC

README

安装

使用以下命令将此包安装到您的现有Laravel项目中。

composer require tinkeshwar/imager

安装成功后,使用以下命令之一发布配置文件:

自动安装

php artisan imager:install

手动安装

php artisan vendor:publish

并选择 Tinkeshwar\Imager\ImagerServiceProvider,这将把image.php复制到您的app/config目录。

运行

php artisan migrate

将图像表模式迁移到您的数据库。

运行以下命令创建符号链接

php artisan storage:link

用法

您的模型
<?php
namespace  App\Models;
use Illuminate\Database\Eloquent\Model;
use Tinkeshwar\Imager\Models\Image;

class <YOUR MODEL>  extends  Model{

    /**
    * One to One Relation with <YOUR> Model
    * A <YOUR MODEL> has one image
    */
    public  function  image(){
	    return  $this->morphOne(Image::class,'imageable');
    }

	/**
    * One to Many Relation with <YOUR> Model
    * A <YOUR MODEL> has many images
    */
    public  function  images(){
	    return  $this->morphMany(Image::class,'imageable');
    }
}
您的控制器
<?php

namespace  App\Http\Controllers;

use App\Models\<YOUR MODEL>;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Tinkeshwar\Imager\Imager;

class  <YOUR CONTROLLER>  extends  Controller {

    public function store (Request $request){
	    $data = $request->validate([
		    'name'=>'required',
		    'image'=>'image|nullable'
	    ]);
	    $yourmodel = <YOUR MODEL>::create($data);
	    if($request->hasFile('image')){
		    $yourmodel->image()->create([
			    'name'=>Imager::moveFile($request->file('image'),'public'), //second parameter is optional, `public` is default
			    'path'=>'public/', //sample path used in above function
                'driver' => config('image.image_storage')
			]);
		}
	}


    public function destroy ($imageId){
        Imager::deleteFile($imageId);
    }
}
您的视图
<form  action="<your route>"  method="POST"  enctype="multipart/form-data">
    @csrf
    <div  class="form-group">
	    <label >Example file input</label>
	    <input  type="file"  class="form-control-file"  name="image">
    </div>
    <button  type="submit"  class="btn btn-primary">Submit</button>
</form>
Blade模板中的静态图像使用
{{thumb($source, $height, $width, $extension)}}

示例

<img src={{thumb('/image/bg.png', 100, 100)}}/>

Blade模板中的动态图像使用

一旦文件被上传到系统中,可以使用以下方式访问

<Your Host>/thumb/{image_id}/{height}/{width}

示例

https://:8000/thumb/1/100/100

如果为提供的image_id和纵横比存在缓存中的图像,将显示现有图像。如果没有,它将在config/image.php中定义的存储中生成具有所需纵横比的图像。

注意

如果重新上传了图像并且之前副本仍然存在于缓存中,则新图像不会被缓存,您需要清除之前图像的缓存以使新图像替代。

有两种方法可以清除缓存

  1. 通过Artisan命令 php artisan imager:clear
  2. 通过调用以下外观方法 Imager::listCache()