1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- /**
- * Created by PhpStorm.
- * Author: NODELOG
- * DateTime: 2017/7/12 21:55
- * Description:
- */
- namespace common\modules\attachment\components\flysystem;
- use League\Flysystem\Adapter\Local;
- use yii\imagine\Image;
- class LocalAdapter extends Local
- {
- public $urlPrefix;
- public function __construct($root, $url, $writeFlags = LOCK_EX, $linkHandling = self::DISALLOW_LINKS, array $permissions = [])
- {
- parent::__construct($root, $writeFlags, $linkHandling, $permissions);
- $this->urlPrefix = $url;
- }
- protected $thumbFileRule = '_{w}_{h}';
- protected $cropFileRule = '_{w}_{h}_{x}_{y}';
- public function thumbnail($path, $width, $height)
- {
- if (strpos($path, $this->urlPrefix . '/') !== false) {
- $path = substr($path, strlen($this->urlPrefix . '/'));
- }
- $pathinfo = pathinfo($path);
- $thumbFile = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . strtr($this->thumbFileRule, ['{w}' => $width, '{h}' => $height]) . '.' . $pathinfo['extension'];
- $thumbPath = $this->pathPrefix . $thumbFile;
- if (!is_file($thumbPath)) {
- Image::thumbnail($this->pathPrefix . $path, $width, $height)->save($thumbPath);
- }
- return $this->urlPrefix . '/' . $thumbFile;
- }
- public function crop($path, $width, $height, array $start = [0, 0])
- {
- if (strpos($path, $this->urlPrefix . '/') !== false) {
- $path = substr($path, strlen($this->urlPrefix . '/'));
- }
- $pathinfo = pathinfo($path);
- $cropFile = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . strtr($this->cropFileRule, ['{w}' => $width, '{h}' => $height, '{x}' => $start[0], '{y}' => $start[1]]) . '.' . $pathinfo['extension'];
- $cropPath = $this->pathPrefix . $cropFile;
- if (!is_file($cropPath)) {
- Image::thumbnail($this->pathPrefix . $path, $width, $height)->save($cropPath);
- }
- Image::crop($this->pathPrefix . $path, $width, $height, $start)->save($cropPath);
- return $this->urlPrefix . '/' . $cropFile;
- }
- public function water()
- {
- // TODO: Implement water() method.
- }
- }
|