131 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								namespace app\service;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use think\Image as TImage;
							 | 
						|||
| 
								 | 
							
								use app\model\System;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class Image extends File
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 对图片进行重置大小,并对宽度大于max宽度的等比缩放为宽度为1920
							 | 
						|||
| 
								 | 
							
								     * milo
							 | 
						|||
| 
								 | 
							
								     * 2019-10-24修改
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function resize($src)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $max = 1920;
							 | 
						|||
| 
								 | 
							
								        $realPath = app()->getRootPath() . 'public/' . ltrim($src,'/');
							 | 
						|||
| 
								 | 
							
								        if(is_file($realPath)){
							 | 
						|||
| 
								 | 
							
								            $img = TImage::open($realPath);
							 | 
						|||
| 
								 | 
							
								            list($img_w,$img_h) = $img->size();
							 | 
						|||
| 
								 | 
							
								            if($max > 0 && $img_w > $max){
							 | 
						|||
| 
								 | 
							
								                $img->thumb($max, $max * ($img_h / $img_w))->save($realPath);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 添加水印
							 | 
						|||
| 
								 | 
							
								     * milo
							 | 
						|||
| 
								 | 
							
								     * 2018-01-17
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function mark($src)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $rootPath = app()->getRootPath();
							 | 
						|||
| 
								 | 
							
								        if(!empty($src)){
							 | 
						|||
| 
								 | 
							
								            $system = System::getSystem();
							 | 
						|||
| 
								 | 
							
								            $realPath = $rootPath . 'public/' . ltrim($src, '/');
							 | 
						|||
| 
								 | 
							
								            if(is_file($realPath)){
							 | 
						|||
| 
								 | 
							
								                if($system['is_mark']){
							 | 
						|||
| 
								 | 
							
								                    $mark = $rootPath . ltrim($system['mark_img'], '/');
							 | 
						|||
| 
								 | 
							
								                    if(is_file($mark)){
							 | 
						|||
| 
								 | 
							
								                        $mark_position = $system['mark_position']??5;
							 | 
						|||
| 
								 | 
							
								                        $mark_opacity = $system['mark_opacity']??50;
							 | 
						|||
| 
								 | 
							
								                        $img = TImage::Open($realPath);
							 | 
						|||
| 
								 | 
							
								                        $img->water($mark,$mark_position,$mark_opacity)->save($realPath);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    //获取水印位置键值对
							 | 
						|||
| 
								 | 
							
								    public static function getMarkPosition()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return [
							 | 
						|||
| 
								 | 
							
								            "1" => '上左',
							 | 
						|||
| 
								 | 
							
								            "2" => '上中',
							 | 
						|||
| 
								 | 
							
								            "3" => '上右',
							 | 
						|||
| 
								 | 
							
								            "4" => '中左',
							 | 
						|||
| 
								 | 
							
								            "5" => '正中',
							 | 
						|||
| 
								 | 
							
								            "6" => '中右',
							 | 
						|||
| 
								 | 
							
								            "7" => '下左',
							 | 
						|||
| 
								 | 
							
								            "8" => '下中',
							 | 
						|||
| 
								 | 
							
								            "9" => '下右'
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 删除图片
							 | 
						|||
| 
								 | 
							
								     * milo
							 | 
						|||
| 
								 | 
							
								     * 2018-01-15
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function delImg($src)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if(!empty(trim($src))){
							 | 
						|||
| 
								 | 
							
								            $realPath = app()->getRootPath() . 'public/' . ltrim($src, '/');
							 | 
						|||
| 
								 | 
							
								            if (file_exists($realPath)) {
							 | 
						|||
| 
								 | 
							
								                $info = pathinfo($realPath);
							 | 
						|||
| 
								 | 
							
								                $source = $info['dirname'] . "/" . $info['filename'] . '*.' . $info['extension'];
							 | 
						|||
| 
								 | 
							
								                foreach(glob($source) as $filename){
							 | 
						|||
| 
								 | 
							
								                    if(is_file($filename)){
							 | 
						|||
| 
								 | 
							
								                        unlink($filename);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                clearstatcache();// 清除缓存
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 获取缩略图
							 | 
						|||
| 
								 | 
							
								     * milo
							 | 
						|||
| 
								 | 
							
								     * 2019-10-24修改
							 | 
						|||
| 
								 | 
							
								     * 避免跨平台出错,目录分隔符全部转换为'/'
							 | 
						|||
| 
								 | 
							
								     * app()->getRuntimePath() = app()->getRootPath().'runtime/当前应用模块(api)/'
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function getThumb($src,$width=0,$height=0,$type = TImage::THUMB_CENTER)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if(empty($src)){
							 | 
						|||
| 
								 | 
							
								            return '';
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $rootPath = app()->getRootPath();
							 | 
						|||
| 
								 | 
							
								        $realPath = $rootPath . 'public/' . ltrim($src, '/');
							 | 
						|||
| 
								 | 
							
								        $realPath = str_replace('\\', '/', $realPath);
							 | 
						|||
| 
								 | 
							
								        if(!file_exists($realPath)){
							 | 
						|||
| 
								 | 
							
								            return '';
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $info = pathinfo($src);
							 | 
						|||
| 
								 | 
							
								        if($width <= 0 && $height <= 0){    //高宽都小于或等于0,则返回原图片
							 | 
						|||
| 
								 | 
							
								            return $src;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $image = TImage::open($realPath);
							 | 
						|||
| 
								 | 
							
								        list($imageWidth, $imageHeight) = $image->size();
							 | 
						|||
| 
								 | 
							
								        if($width <= 0){
							 | 
						|||
| 
								 | 
							
								            $width = floor($height * ($imageWidth / $imageHeight));
							 | 
						|||
| 
								 | 
							
								        }elseif($height <= 0){
							 | 
						|||
| 
								 | 
							
								            $height = floor($width * ($imageHeight / $imageWidth));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        if($width >= $imageWidth || $height >= $imageHeight){
							 | 
						|||
| 
								 | 
							
								            return $src;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $thumbName = $info['dirname']. "/" .$info['filename'].'_'.$width.'_'.$height.'.'.$info['extension'];
							 | 
						|||
| 
								 | 
							
								        $realThumbName = $rootPath . 'public/' . ltrim($thumbName, '/');
							 | 
						|||
| 
								 | 
							
								        $realThumbName = str_replace('\\', '/', $realThumbName);
							 | 
						|||
| 
								 | 
							
								        if(!file_exists($realThumbName)){
							 | 
						|||
| 
								 | 
							
								            $image->thumb($width, $height, $type)->save($realThumbName);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return str_replace('\\', '/', $thumbName);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |