jmoguelruiz / yii2-resource-image
Requires
- yiisoft/yii2: ^2.0
This package is not auto-updated.
Last update: 2024-09-29 01:19:07 UTC
README
欢迎使用 yii2-resource-image wiki!
这是一个yii2组件,用于管理在服务器上上传的图像以及生成路径,操作最简单。
覆盖
我认为URL路径由五部分组成:根目录,基础路径,资源,大小,名称。例如
- root : http://project-template.dev
- basePath : images/dev
- resource : player
- size : thumb
- name : image_1485386176.jpg
所有组合在一起就是 http://project-template.dev/images/dev/player/thumb/image_1485386176.jpg
因此,我构建了这个组件,以配置每一部分并生成最简单的URL,我包含了帮助你管理图像文件的功能。
每个部分都有自己的配置。
根目录
这部分是URL的根目录,以下代码是默认配置
[ 'isWebUrl' => true ]
当 isWebUrl 为true时,生成 http://project-template.dev/ 否则为 /Users/josemoguel/Documents/fuentes/project-template/frontend/web
基础路径
这部分根据您运行的环境自动配置。
[ 'enviroment' => $this->getEnviromentRunning() ]
如果您想设置环境,有三个默认环境 dev,test,prod。
资源
属于图像的资源,如player、user、gamer等。
[
'type' => '',
'isTemp' => false
]
当 isTemp 为true时,将前缀 _temp 添加到资源中,或者如果您已配置 player_temp,将 isTemp = true 用于处理图像,然后保存到实际目录。
大小
您可以为图像保存多个大小。
[ 'type' => self::SIZE_ORIGINAL ]
名称
您可以为图像分配名称。
[ 'title' => '', 'ext' => '', 'concatTime' => true ]
如果您设置 concatTime = true,则将时间连接到图像名称中,以解决缓存问题。 image_1485386176.jpg。
安装
首选方法是composer
composer install jmoguelruiz/yii2-resource-image
或者添加到您的composer文件中。
"jmoguelruiz/yii2-resource-image": "1.0.*"
在config/main中的component部分放入以下代码
[ 'components' => [ 'resourceImage' => [ 'class' => 'common\components\ResourceImage', // Optional Configs 'modelClasses' => [ // Custom models. 'ResourcePath' => 'common\components\ResourcePath' ], 'basePaths' => [ // Base paths of your project in each enviroment. 'prod' => 'images/', 'test' => 'images/test', 'dev' => 'images/dev' ], 'serverType' => ResourceImage::SERVER_LOCAL // Server type for now is only saved in same server. 'prefixTemp' => 'temp', // Temp prefix for folders. 'containerBasePath' => "@frontend/web", // Container base to save images. 'cdn' => 'http://www.project.com', // If you want cdn. 'symbolConcatTime' => '_' // Symbol to concat the name with the string time. ], ... ] ]
您应该在common\components文件夹中添加ResourceImage文件,覆盖此扩展,以配置以下选项。
<?php namespace common\components; class ResourceImage extends \jmoguelruiz\yii2\components\ResourceImage { /** * Your types of resources */ const TYPE_ONE = 'one'; const TYPE_TWO = 'two'; const TYPE_THREE = 'three'; /** * Your sizes */ const SIZE_CROP = 'crop'; const SIZE_250_250 = '250_250'; const SIZE_200_200 = '200_200'; /** * You resource path */ public function resources() { return \yii\helpers\ArrayHelper::merge(parent::resources(),[ self::TYPE_ONE => 'one', self::TYPE_TWO => 'two', self::TYPE_THREE => 'two' . DIRECTORY_SEPARATOR . 'three' // two/three ]); } /** * The images names to default resource. */ public function resourcesDefault(){ return \yii\helpers\ArrayHelper::merge(parent::resources(),[ self::TYPE_ONE => 'default.jpg', self::TYPE_TWO => 'default.jpg', self::TYPE_THREE => 'default.jpg' ]); } /** * You can override the sizes for customize your size in your * project, the name of size will be the name of the new folder. * Example: * * image/player <- Here save the original * image/player/thumb <- Here save the size thumb * image/player/250_250 <- Here save your custom size. * * @return type */ public function getSizes() { return \yii\helpers\ArrayHelper::merge([ self::SIZE_CROP => 'crop', self::SIZE_250_250 => '250_250', self::SIZE_200_200 => '200_200' ],parent::getSizes()); } }
创建保存图像的文件夹,并配置您的环境 enviroment/index.php 以设置权限。
'Development' => [ 'path' => 'dev', 'setWritable' => [ 'backend/runtime', 'backend/web/assets', 'frontend/runtime', 'frontend/web/assets', 'frontend/web/images/one/, <--- Example 'frontend/web/images/one_temp/, <--- Example 'frontend/web/images/one/250_250, <--- Example ], 'setExecutable' => [ 'yii', 'yii_test', ], 'setCookieValidationKey' => [ 'backend/config/main-local.php', 'frontend/config/main-local.php', ], ],
用法
生成URL。
$resourceImage = Yii::$app->resourceImage; // This function return a model ResourcePath. $pathOne = $resourceImage->newPath([ 'root' => ['isWebUrl' => false], 'basePath' => ['enviroment' => 'dev'], 'resource' => ['type' => ResourceImage::TYPE_PLAYER], 'size' => ['type' => ResourceImage::SIZE_THUMB], 'name' => ['title' => 'imageOne', 'ext' => 'jpg', 'concatTime' => true] ]); /* Result: /Users/josemoguel/Documents/fuentes/plantillas/project-template/frontend/web/images/dev/player/thumb/image_1485389319.jpg */ $pathOne->path;
保存一个图像文件。
$file = UploadedFile::getInstance($user, 'file');
// Generating the path to save the image. // /Users/josemoguel/Documents/fuentes/plantillas/project-template/frontend/web/images/dev/player_temp/12321_1485389719.jpg $imageOriginalTemp = $resourceImage->newPath([ 'root' => ['isWebUrl' => false], 'resource' => ['type' => ResourceImage::TYPE_PLAYER, 'isTemp' => true], 'name' => ['title' => '12321', 'ext' => $file->extension] ]); //Uploading the image. $resourceImage->upload($imageOriginalTemp, $file); // Saving image, automatically detect if directory is temp, after remove the postFix _temp and save in the real path. // player_temp -> player $resourceImage->save($imageOriginalTemp);
保存多个大小的图像。
$imageOriginalTemp = $resourceImage->newPath([ 'root' => ['isWebUrl' => false], 'resource' => ['type' => ResourceImage::TYPE_PLAYER, 'isTemp' => true], 'name' => ['title' => '12321', 'ext' => $file->extension] ]); $imageThumbnailTemp = $resourceImage->newPath(ArrayHelper::merge($imageOriginalTemp->config,[ 'size' => ['type' => ResourceImage::SIZE_THUMB] ])); $imageCropTemp = $resourceImage->newPath(ArrayHelper::merge($imageOriginalTemp->config,[ 'size' => ['type' => ResourceImage::SIZE_CROP] ])); $resourceImage->upload($imageOriginalTemp, $file); $resourceImage->copy($imageOriginalTemp, $imageThumbnailTemp); $resourceImage->copy($imageOriginalTemp, $imageCropTemp); $resourceImage->save($imageOriginalTemp); $resourceImage->thumbnail($imageThumbnailTemp); $resourceImage->save($imageThumbnailTemp); $resourceImage->crop($imageCropTemp); $resourceImage->save($imageCropTemp);
保存特定大小的图像。
$imageOriginalTemp = $resourceImage->newPath([ 'root' => ['isWebUrl' => false], 'resource' => ['type' => ResourceImage::TYPE_PLAYER, 'isTemp' => true], 'name' => ['title' => '12321', 'ext' => $file->extension] ]); $resourceImage->upload($imageOriginalTemp, $file); // You can proccess the image with some functions in the componente, thumbnail, crop. $resourceImage->saveBySize(ResourceImage::SIZE_THUMB, $imageOriginalTemp, ['thumbnail']);
获取网络URL
// http://project-template.dev/images/dev/player/thumb/jijo.jpg $resourceImage->getWebUrl("jijo.jpg", ResourceImage::TYPE_PLAYER, ResourceImage::SIZE_THUMB);
获取默认网络URL
//http://project-template.dev/images/dev/player/crop/default.jpg $resourceImage->getDefaultWebUrl(ResourceImage::TYPE_PLAYER, ResourceImage::SIZE_CROP);
资源路径
生成新路径,您可以访问模型的数据。
class ResourcePath extends Model { /** * Final path. * @var string */ public $path; /** * Configuration for final path. * @var arr */ public $config = []; /** * Name generated * @var string */ public $name; /** * Size generated * @var string */ public $size; /** * Resource generated * @var string */ public $resource; /** * Base Path generated * @var string */ public $basePath; /** * Root generated * @var string */ public $root; }
贡献
如果您想使用此组件并做出贡献,请发送电子邮件至 jmoguelruiz@gmail.com。
从社区到社区...