magnum34/thumbnail-so

PHP Thumbnail so 是一个提供图像处理的库。

v1.1.0 2021-04-05 19:14 UTC

This package is auto-updated.

Last update: 2024-09-06 03:33:48 UTC


README

Build Status codecov License: MIT

Thumbnail So 是一个PHP图像处理库,可以进行缩放(按最大边进行缩放)以适应jpeg和png。可扩展到不同的文件存储服务提供商,例如Dropbox。默认为本地存储,AWS S3。

入门指南

要求

  • PHP >=7.1

设置

composer require magnum34/thumbnail-so

方法

  1. resizeToMaxSide($max)
  • max - 缩放后图像长边的最大像素值。
  1. save($type, $directorty, $filename)
  • type - 提供商类型,默认:local,s3。
  • directory - 目标路径。

保存到本地存储

示例

use ThumbnailSo\ThumbnailSo;

$img = new ThumbnailSo('image.jpeg');
$img->resizeToMaxSide(150);
$img->save('local', 'example', 'image');

保存到AWS S3

cp .env.example .env

AWS S3配置示例。

AWS_ACCESS_KEY_ID="PUT_THE_ACCESS_KEY_ID"  
AWS_SECRET_ACCESS_KEY="PUT_THE_SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION="PUT_THE_SELECTED_REGION_CODE"
AWS_BUCKET="PUT_YOUR_BUCKET_NAME"

示例

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__,'.env');
$dotenv->load();

use ThumbnailSo\ThumbnailSo;

$img = new ThumbnailSo('image.jpeg');
$img->resizeToMaxSide(150);
$img->save('s3', 'example', 'image');

扩展新提供商

Dropbox示例

  1. 安装Dropbox PHP SDK -> https://github.com/kunalvarma05/dropbox-php-sdk
php composer require kunalvarma05/dropbox-php-sdk
  1. 为Dropbox创建驱动程序。

DropboxDriver.php

<?php

namespace Dropbox;

use ThumbnailSo\DriverManagerInterface;
use ThumbnailSo\Exceptions\ThumbnailSoException;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxFile;

class DropboxDriver implements DriverManagerInterface {

    // Name driver - provider
    public function getName(){
        return 'dropbox';
    }

    // Name configuration driver
    public function getConfigName(){
        return "dropbox";
    }

    // data configuration driver
    public function getConfig(){
        return [
            'client_id' => $_ENV['DROPBOX_CLIENT_ID'],
            'client_secret' => $_ENV['DROPBOX_CLIENT_SECRET'],
            'token' => $_ENV['DROPBOX_ACCESS_TOKEN']
        ];

    }

    // Record rule for the driver
    public function afterSave(string $source_image, string $destination_dir, string $destination_name, string $extension){
        $config = $this->getConfig();
        try {
            $app = new DropboxApp($config['client_id'], $config['client_secret'],$config['token']);
            $dropbox = new Dropbox($app);
            $dropboxFile = new DropboxFile($source_image);
            $dropbox->simpleUpload($dropboxFile , "/{$destination_dir}/{$destination_name}.{$extension}", ['autorename' => true]);
           
        }catch(\Exception $exc){
            throw new ThumbnailSoException($exc->getMessage());
        }

    }
}
  1. 将环境变量添加到文件 .env 中
DROPBOX_CLIENT_ID="PUT_THE_CLIENT_ID"
DROPBOX_CLIENT_SECRET="PUT_THE_CLIENT_SECRET"
DROPBOX_ACCESS_TOKEN="PUT_THE_ACCESS_TOKEN"
  1. 启动Thumbnail so用于dopbox。
require __DIR__ . '/vendor/autoload.php';
require('./DropboxDriver.php');

use ThumbnailSo\ThumbnailSo;
use ThumbnailSo\RegisterDriver;
use Dropbox\DropboxDriver;

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__,'.env');
$dotenv->load();

// Register driver for Dropbox
$dropbox = new DropboxDriver();
RegisterDriver::set('dropbox',$dropbox );

$img = new ThumbnailSo('./cat.jpeg');
$img->resizeToMaxSide(150);
$img->save('dropbox', 'example', 'cat');

演示应用程序 - 框架Silex

https://github.com/Magnum34/silex-thumbnail-so-example

待办事项

  1. 更多单元测试。
  2. Thumbnail So API文档。

许可证

Thumbnail So 采用MIT许可证

版权所有 2021 Magnum34