TP6压缩文件
/** * @return \think\response\Json */ public function upload() { // 获取上传的文件 $file = Request::file('link'); $savePath = $this->imagIckCompress($file); var_dump($savePath); var_dump($savePath); // return success(Status::SUCCESS, '操作成功', [ // "link" => 'https://xest-aaning.com/storage/' . $repfile // ]); } private function imagIckCompress($file) { if ($file) { # 上传文件 $fileName = $file->getOriginalName(); $type = strstr($fileName, '.'); // 将原始文件名的后缀名修改为 .png $newName = uniqid('front_', true) . $type; // 保存上传文件到 public 目录的 uploads 文件夹中,文件名为 $newName $savePath = 'storage/topic'; $saveFullPath = $savePath . DIRECTORY_SEPARATOR . $newName; // 移动文件到指定目录 $file->move(public_path($savePath), $newName); $uniqueName = uniqid('new_front_', true) . $type; $target_file = app()->getRootPath() . "public/storage/topic/" . $uniqueName; $image = new Imagick($saveFullPath); // // 设置压缩质量(0-100,数值越小压缩比越高) // $image->setImageCompressionQuality(90); // // // // 压缩图片 // $image->writeImage($target_file); // // // 释放资源 // $image->destroy(); // 获取原始图片的文件大小 $originalFileSize = $image->getImageLength(); // 设置目标文件大小(1MB) $targetFileSize = 1024 * 1024; // 初始压缩质量为90 $compressionQuality = 90; // 逐渐降低压缩质量,直到文件大小小于目标大小 while ($originalFileSize > $targetFileSize && $compressionQuality > 40) { // 设置压缩质量 $image->setImageCompressionQuality($compressionQuality); // 保存缩小尺寸后的图片 $image->writeImage($target_file); // 获取保存后的图片文件大小 // $compressedFileSize = filesize($target_file); // 压缩质量降低10,再次循环 $compressionQuality -= 10; } return $target_file; } else { return false; } }
作者地址:https://www.cnblogs.com/G921123/
创作也有乐趣 知识分享 转载注明出处 相互理解 谢谢!
创作也有乐趣 知识分享 转载注明出处 相互理解 谢谢!