magnum34 / thumbnail-so
PHP Thumbnail so 是一个提供图像处理的库。
v1.1.0
2021-04-05 19:14 UTC
Requires
- php: >=7.1.0
- ext-fileinfo: *
- ext-gd: *
- aws/aws-sdk-php: ^3.176
- vlucas/phpdotenv: ^5.3
Requires (Dev)
- ext-gd: *
- phpdocumentor/phpdocumentor: ^2.9
- phpunit/php-code-coverage: ^6.1
- phpunit/phpunit: ^7.0
README
Thumbnail So 是一个PHP图像处理库,可以进行缩放(按最大边进行缩放)以适应jpeg和png。可扩展到不同的文件存储服务提供商,例如Dropbox。默认为本地存储,AWS S3。
入门指南
要求
- PHP >=7.1
设置
composer require magnum34/thumbnail-so
方法
- resizeToMaxSide($max)
- max - 缩放后图像长边的最大像素值。
- 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示例
- 安装Dropbox PHP SDK -> https://github.com/kunalvarma05/dropbox-php-sdk
php composer require kunalvarma05/dropbox-php-sdk
- 为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()); } } }
- 将环境变量添加到文件 .env 中
DROPBOX_CLIENT_ID="PUT_THE_CLIENT_ID"
DROPBOX_CLIENT_SECRET="PUT_THE_CLIENT_SECRET"
DROPBOX_ACCESS_TOKEN="PUT_THE_ACCESS_TOKEN"
- 启动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
待办事项
- 更多单元测试。
- Thumbnail So API文档。
许可证
Thumbnail So 采用MIT许可证。
版权所有 2021 Magnum34