micmelo/michelangelo

Laravel 图像管理和优化包

0.2.0 2021-02-13 20:13 UTC

This package is auto-updated.

Last update: 2024-09-16 16:50:01 UTC


README

Michelangelo

Michelangelo

Michelangelo 是一个 Laravel 图像管理和优化包。定义图像尺寸和选项,以多尺寸存储上传的图像(可选带水印)并在需要时从您的网站上检索优化后的图像。

概述

好处

您可以保持原始用户上传的图像不变(2MB 或更大)。此包将创建新的优化图像,并在清单文件中保存原始和优化图像的引用。

您的页面将加载更快,因为下载的 MB 将更少,因为图像将更小。我在开发阶段后期实施此包作为附加组件后,成功将图像大小从 2.4MB 减少到 700Kb。

安装

从命令行

composer require michelmelo/michelangelo

将配置文件 michelangelo.php 发布到您的 /config 目录

php artisan vendor:publish --provider="Michelmelo\Michelangelo\ServiceProvider" --tag=config

安装完成!

配置

在继续之前,请确保打开 /config/michelangelo.php 文件并更新尺寸和质量以满足您的需求。

存储方法

在您将用户上传的图像存储在您的存储 UploadedFile $image->store('images') 中,并且您已获取到图像的路径后。将此路径(您通常将其存储在数据库中)提供给 Michelangelo

use Michelmelo\Michelangelo\Michelangelo;

public function store(Request $request, Michelangelo $michelangelo)
{
    // ...

    // store original image in storage
    $article->image = $request->image->store('images');

    // optimize original image to desired dimensions
    $michelangelo->optimize($article->image, ['news', 'news_cover']);

    // ...
}

更新方法

当用户将替换现有图像为新图像时,我们必须首先从存储和清单文件中清除旧图像的所有记录,然后优化新图像

use Michelmelo\Michelangelo\Michelangelo;

public function update(Request $request, Article $article, Michelangelo $michelangelo)
{
    // ...

    if ($request->hasFile('image')) {

        // delete original image from storage
        Storage::delete($article->image);

        // delete all optimized images for old image
        $michelangelo->drop($article->image, ['news', 'news_cover']);

        // save new original image to storage and retrieve the path
        $article->image = $request->image->store('images');

        // optimize new original image
        $michelangelo->optimize($article->image, ['news', 'news_cover']);
    }

    // ...
}

销毁方法

当删除具有优化图像的记录时,请确保删除优化图像以减少未使用的文件

use Michelmelo\Michelangelo\Michelangelo;


public function destroy(Article $article, Michelangelo $michelangelo)
{
    // ...

    // delete original image
    Storage::delete($article->image);

    // delete optimized images
    $michelangelo->purge($article->image);

    // delete record from database
    $article->delete();

    // ...
}

检索优化图像

从您的视图文件中

<image src="{{ Michelangelo::get($article->image, 'news') }}" />

此行将检索优化图像的 URL。

赞助商和资助者

贡献

行为准则

许可协议

Michelangelo 是开源软件,许可协议为 MIT 许可协议