| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- namespace App\Module\File\Services;
- use App\Module\File\Models\FileImg;
- use Illuminate\Support\Facades\Storage;
- /**
- * 图片服务类
- *
- * 提供图片处理相关的服务
- */
- class ImgService
- {
- /**
- * 获取图片模型
- *
- * @param string $path 图片路径
- * @return FileImg|null 图片模型
- */
- public function getModel($path)
- {
- $model = FileImg::where('path', $path)->first();
- return $model;
- }
- /**
- * 下载图片
- *
- * @param FileImg $fileImg 图片模型
- * @return resource|null 下载响应
- */
- public function download(FileImg $fileImg)
- {
- return Storage::disk($fileImg->storage_disk)->download($fileImg->path);
- }
- /**
- * 通过ID获取图片URL
- *
- * @param int $id 图片ID
- * @return string 图片URL
- */
- public function getPicUrl4Id($id)
- {
- $model = FileImg::find($id);
- if($model){
- return $this->getPicUrl($model);
- }
- return '';
- }
- /**
- * 获取图片的可用访问地址
- *
- * @param FileImg $fileImg 图片模型
- * @param bool $private 是否私有
- * @return string 图片URL
- */
- public function getPicUrl(FileImg $fileImg, $private = false)
- {
- if($fileImg->private == 1){
- // 私有的地址
- if($private){
- return Storage::disk('local')->url($fileImg->path);
- }
- return '';
- }
- $src = Storage::disk($fileImg->storage_disk)->url($fileImg->path);
- return $src;
- }
- /**
- * 获取后台上传的图片的访问地址
- *
- * @param string $path 图片路径
- * @return string 图片URL
- */
- public function getAdminPicUrl($path)
- {
- $disk = config('admin.upload.disk');
- if (config("filesystems.disks.{$disk}")) {
- $src = Storage::disk($disk)->url($path);
- }
- return $src;
- }
- /**
- * 获取后台上传的图片的源地址
- *
- * @param string $path 图片路径
- * @return string 图片源地址
- */
- public function getAdminPicSrc($path)
- {
- $disk = config('admin.upload.disk');
- if (config("filesystems.disks.{$disk}")) {
- $src = Storage::disk($disk)->url($path);
- }
- $ss = parse_url($src);
- return $ss['path'];
- }
- /**
- * 保存后台图片
- *
- * @param string $path 图片路径
- * @param mixed $data 图片数据
- * @return bool 是否成功
- */
- public function saveAdminPic($path, $data)
- {
- $disk = config('admin.upload.disk');
- if (config("filesystems.disks.{$disk}")) {
- $src = Storage::disk($disk)->put($path, $data);
- }
- return $src;
- }
- /**
- * 检查后台图片是否存在
- *
- * @param string $path 图片路径
- * @return bool 是否存在
- */
- public function hasAdminPic($path)
- {
- $disk = config('admin.upload.disk');
- if (config("filesystems.disks.{$disk}")) {
- $src = Storage::disk($disk)->exists($path);
- }
- return $src;
- }
- /**
- * 图片处理为可访问的地址
- *
- * @param array $arr 图片数组
- * @return array 图片URL数组
- */
- public function imgArr2imgArrurl($arr)
- {
- $res = [];
- foreach ($arr as $img){
- $res[] = $this->img2imgurl($img);
- }
- return $res;
- }
- /**
- * 图片处理为可访问的地址
- *
- * @param string $img 图片路径
- * @return string 图片URL
- */
- public function img2imgurl($img)
- {
- if(substr($img,0,8) == '/storage'){
- return $this->getAdminPicUrl(substr($img,8));
- }
- return $img;
- }
- }
|