| <?php |
| namespace app\common\model; |
| use think\image\Exception; |
|
|
| class Image extends Base { |
|
|
| public function down_load($url, $config, $flag = 'vod') |
| { |
| if (substr($url, 0, 4) == 'http') { |
| return $this->down_exec($url, $config, $flag); |
| } else { |
| return $url; |
| } |
| } |
|
|
| public function down_exec($url, $config, $flag = 'vod') |
| { |
| $upload_image_ext = 'jpg,jpeg,png,gif,webp'; |
| $ext = strtolower(pathinfo($url, PATHINFO_EXTENSION)); |
| if (!in_array($ext, explode(',', $upload_image_ext))) { |
| $ext = 'jpg'; |
| } |
| $img = mac_curl_get($url); |
| if (empty($img) || strlen($img) < 10) { |
| return $url; |
| } |
| $file_name = md5(uniqid()) .'.' . $ext; |
| |
| $_upload_path = ROOT_PATH . 'upload' . '/' . $flag . '/'; |
| |
| $_save_path = 'upload'. '/' . $flag . '/' ; |
| $ymd = date('Ymd'); |
| $n_dir = $ymd; |
| for($i=1;$i<=100;$i++){ |
| $n_dir = $ymd .'-'.$i; |
| $path1 = $_upload_path . $n_dir. '/'; |
| if(file_exists($path1)){ |
| $farr = glob($path1.'*.*'); |
| if($farr){ |
| $fcount = count($farr); |
| if($fcount>999){ |
| continue; |
| } |
| else{ |
| break; |
| } |
| } |
| else{ |
| break; |
| } |
| } |
| else{ |
| break; |
| } |
| } |
|
|
| $_upload_path .= $n_dir . '/'; |
| $_save_path .= $n_dir . '/'; |
|
|
| |
| $_file_path = $_save_path.$file_name; |
| |
| $saved_img_path = $_upload_path . $file_name; |
| $r = mac_write_file($saved_img_path, $img); |
| if(!$r){ |
| return $url; |
| } |
| |
| $image_info = getimagesize($saved_img_path); |
| $extension_hash = [ |
| '1' => 'gif', |
| '2' => 'jpg', |
| '3' => 'png', |
| '18' => 'webp', |
| ]; |
| if (!isset($image_info[2]) || !isset($extension_hash[$image_info[2]])) { |
| return $url; |
| } |
| $file_size = filesize($_upload_path.$file_name); |
| |
| if ($config['watermark'] == 1) { |
| $this->watermark($_file_path,$config,$flag); |
| } |
| |
| if ($config['thumb'] == 1) { |
| $this->makethumb($_file_path,$config,$flag); |
| } |
| |
| $_file_path = model('Upload')->api($_file_path, $config); |
|
|
| $tmp = $_file_path; |
| if (str_starts_with($tmp, '/upload')) { |
| $tmp = substr($tmp,1); |
| } |
| if (str_starts_with($tmp, 'upload')) { |
| $annex = []; |
| $annex['annex_file'] = $tmp; |
| $annex['annex_type'] = 'image'; |
| $annex['annex_size'] = $file_size; |
| model('Annex')->saveData($annex); |
| } |
| return $_file_path; |
| } |
|
|
| public function watermark($file_path,$config,$flag='vod') |
| { |
| if(empty($config['watermark_font'])){ |
| $config['watermark_font'] = './static/font/test.ttf'; |
| } |
| try { |
| $image = \think\Image::open('./' . $file_path); |
| $image->text($config['watermark_content']."", $config['watermark_font'], $config['watermark_size'], $config['watermark_color'],$config['watermark_location'])->save('./' . $file_path); |
| } |
| catch(\Exception $e){ |
|
|
| } |
| } |
|
|
| public function makethumb($file_path,$config,$flag='vod',$new=1) |
| { |
| $thumb_type = $config['thumb_type']; |
| $data['thumb'] = []; |
| if (!empty($config['thumb_size'])) { |
| try { |
| $image = \think\Image::open('./' . $file_path); |
| |
| $thumbs = explode(',', $config['thumb_size']); |
| foreach ($thumbs as $k => $v) { |
| $t_size = explode('x', strtolower($v)); |
| if (!isset($t_size[1])) { |
| $t_size[1] = $t_size[0]; |
| } |
| $new_thumb = $file_path . '_' . $t_size[0] . 'x' . $t_size[1] . '.' . strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); |
| if($new==0){ |
| $new_thumb = $file_path; |
| } |
| $image->thumb($t_size[0], $t_size[1], $thumb_type)->save('./' . $new_thumb); |
| $thumb_size = round(filesize('./' . $new_thumb) / 1024, 2); |
| $data['thumb'][$k]['type'] = 'image'; |
| $data['thumb'][$k]['flag'] = $flag; |
| $data['thumb'][$k]['file'] = $new_thumb; |
| $data['thumb'][$k]['size'] = $thumb_size; |
| $data['thumb'][$k]['ctime'] = request()->time(); |
|
|
| if ($config['watermark'] == 1) { |
| $image = \think\Image::open('./' . $new_thumb); |
| $image->text($config['watermark_content'], $config['watermark_font'], $config['watermark_size'], $config['watermark_color'])->save('./' . $new_thumb); |
| } |
| } |
| } |
| catch(\Exception $e){ |
|
|
| } |
| } |
| return $data; |
| } |
|
|
|
|
|
|
|
|
| } |