tinkeśwar / imager
这是一个Laravel扩展包,可以实时从现有图像创建任何所需大小的缩略图。
2.3.12
2022-05-26 11:24 UTC
Requires
- php: >=7.0.0
- ext-gd: *
Suggests
- ext-gd: to use GD library based image processing.
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
中定义的存储中生成具有所需纵横比的图像。
注意
如果重新上传了图像并且之前副本仍然存在于缓存中,则新图像不会被缓存,您需要清除之前图像的缓存以使新图像替代。
有两种方法可以清除缓存
- 通过Artisan命令
php artisan imager:clear
- 通过调用以下外观方法
Imager::listCache()