getObject($object, $local_file_url); } else { $local_file_url = '.' . $file_url; } return $local_file_url; } /** * 创建二维码(保存到服务器) * @param string $link_url 扫码跳转链接 * @param string $file_dirname 存储文件夹,以"./"开头 * @param string $file_name 存储名称,必填 * @return string */ function create_qr_code_to_server($link_url, $file_dirname, $file_name) { // 本地存储位置 $local_file_path = './temp/' . $file_dirname . '/' . $file_name; // 文件夹不存在时,先生成文件夹 create_directory($local_file_path); //创建二维码 $writer = new \Endroid\QrCode\Writer\PngWriter(); $qrCode = \Endroid\QrCode\QrCode::create($link_url) ->setSize(200) //二维码尺寸 ->setMargin(5) // 设置二维码的rgb颜色和透明度a,这里是黑色 ->setForegroundColor(new \Endroid\QrCode\Color\Color(0, 0, 0)) // 设置二维码图片的背景底色,这里是白色 ->setBackgroundColor(new \Endroid\QrCode\Color\Color(255, 255, 255)); $result = $writer->write($qrCode); // 保存到本地路径 $result->saveToFile($local_file_path); // 返回本地路径 return $local_file_path; } /** * 创建二维码(先传到本地 后上传至OSS并删除本地文件) * @param string $link_url 扫码跳转链接 * @param string $oss_file_dirname OSS对象存储文件夹 * @param string $file_path OSS对象存储名称,必填 * @date 2022-11-18 * @return string */ function create_qr_code_to_oss($link_url, $oss_file_dirname, $oss_file_name) { // 本地存储位置 $local_file_path = './temp/' . $oss_file_dirname . '/' . $oss_file_name; // 文件夹不存在时,先生成文件夹 create_directory($local_file_path); // 创建二维码 $writer = new \Endroid\QrCode\Writer\PngWriter(); $qrCode = \Endroid\QrCode\QrCode::create($link_url) ->setSize(200) //二维码尺寸 ->setMargin(5) // 设置二维码的rgb颜色和透明度a,这里是黑色 ->setForegroundColor(new \Endroid\QrCode\Color\Color(0, 0, 0)) // 设置二维码图片的背景底色,这里是白色 ->setBackgroundColor(new \Endroid\QrCode\Color\Color(255, 255, 255)); $result = $writer->write($qrCode); // 保存到本地路径 $result->saveToFile($local_file_path); // 上传到OSS $uid = defined('UID') ? UID : 2; $oss_param = get_ali_oss_config($uid); $oss_class = new \ali\oss\Oss($oss_param); $res = $oss_class->uploadFile($local_file_path, $oss_file_dirname, $oss_file_name); return $res['url']; } function batchDownImg($zip_name, $img_array) { $zip_path = 'zip/' . $zip_name . '.zip'; $zip = new \ZipArchive(); $zip->open($zip_path, \ZipArchive::CREATE); //打开压缩包 $img_path = []; foreach ($img_array as $key => $value) { foreach ($value as $k => $val) { $file_suffix = explode('.', $val)[count(explode('.', $val)) - 1]; $local_file = saveFileToLocal($val); $img_path[] = $local_file['local_file']; $zip->addFile($local_file['local_file'], $key . '/' . $k . '.' . $file_suffix); } } $zip->close(); if (!file_exists($zip_path)) { header('HTTP/1.1 404 NOT FOUND'); } else { $down_file = './' . $zip_path; // 下载文件 ob_clean(); header('Pragma: public'); header('Last-Modified:' . gmdate('D, d M Y H:i:s') . 'GMT'); header('Cache-Control:no-store, no-cache, must-revalidate'); header('Cache-Control:pre-check=0, post-check=0, max-age=0'); header('Content-Transfer-Encoding:binary'); header('Content-Encoding:none'); header('Content-type:multipart/form-data'); header('Content-Disposition:attachment; filename="' . $zip_name . '.zip"'); //设置下载的默认文件名 header('Content-length:' . filesize($down_file)); $fp = fopen($down_file, 'r'); while (connection_status() == 0 && $buf = @fread($fp, 8192)) { echo $buf; } fclose($fp); @unlink($down_file); @flush(); @ob_flush(); foreach ($img_path as $k => $val) { @unlink($val); } exit(); } } /** * 音频amr格式转mp3格式 * @param string $amr_file_path AMR格式文件地址 * @param string $mp3_file_path MP3格式文件地址 * @date 2022-08-15 */ function amr_to_mp3($amr_file_path, $mp3_file_path) { // 执行命令ffmpeg $str = "ffmpeg -y -i " . $amr_file_path . " " . $mp3_file_path; exec($str); return $mp3_file_path; } /** * 将网络图片保存到服务器 * @param string $file_url 网络图片地址 * @param string $local_file_dirname 本地图片文件夹 * @param string $local_file_name 本地图片名称 * @date 2022-08-26 */ function file_save_to_server($file_url, $local_file_dirname = '', $local_file_name = '') { // 默认存储目录 if (empty($local_file_dirname)) { $local_file_dirname = './temp'; } // 默认存储名称 当前微秒数md5加密+原文件后缀 if (empty($local_file_name)) { // 文件名为当前微秒加密 $local_file_name = md5(microtime(true)); // 获取后缀名 $suffix = get_suffix($file_url); // 文件名 $local_file_name .= '.' . $suffix; } // 本地存储路径 $local_file_path = $local_file_dirname . '/' . $local_file_name; // 文件夹不存在时,先生成文件夹 create_directory($local_file_path); // 将网络图片保存到服务器 $file = file_get_contents($file_url); file_put_contents($local_file_path, $file); // 返回本地路径 return $local_file_path; } /** * 网络图片转base64 * @param string $img * @param bool $imgHtmlCode * @date 2022-11-23 */ function image_to_base64($img = '', $imgHtmlCode = true) { // $base64 = "" . chunk_split(base64_encode(file_get_contents($img))); if ($imgHtmlCode) { $imageInfo = getimagesize($img); return 'data:' . $imageInfo['mime'] . ';base64,' . str_replace(array("\r\n", "\r", "\n"), '', chunk_split(base64_encode(file_get_contents($img)))); } else { return str_replace(array("\r\n", "\r", "\n"), '', chunk_split(base64_encode(file_get_contents($img)))); } // $img = file_get_contents($file); // // $img_info = getimagesize($file); // // $file_content = base64_encode($img); ////判读图片类型 // switch ($img_info[2]) { // case 1: // $img_type = "gif"; // break; // case 2: // $img_type = "jpg"; // break; // case 3: // $img_type = "png"; // break; // } // //// 显示输出 // $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content;//合成图片的base64编码 // return $img_base64; } /** * 获取视频第一帧截图 * @param string $url 视频位置(OSS) * @date 2021-06-24 */ function get_oss_video_screenshot($file_url, $time = 0) { $uid = defined('UID') ? UID : 2; $oss_param = get_ali_oss_config($uid); $oss_class = new \ali\oss\Oss($oss_param); // 下载OSS文件到服务器 $result = $oss_class->getObject($file_url); // 服务器文件路径 $local_file_url = $result['local_file_url']; // 视频第一帧路径 $screenshot_local_file_url = './temp/' . md5(microtime(true)) . '_img.jpg'; // 利用服务器ffmpeg命令截取视频帧数 $result = get_video_screenshot_by_ffmpeg($local_file_url, $screenshot_local_file_url, $time); // 将图片存储到OSS $oss_file_dirname = 'uid' . $uid . '/video_screenshot'; $res = $oss_class->uploadFile($screenshot_local_file_url, $oss_file_dirname); // 删除服务器视频文件 unlink($local_file_url); return $res; } /** * 获取COS的视频第一帧截图 * @param string $url 视频位置(OSS) * @date 2022-12-08 */ function get_cos_video_screenshot($file_url, $time = 0) { $uid = defined('UID') ? UID : 2; $cos_param = get_tencent_cos_config($uid); $file_class = new \tencent\cos\object\File($cos_param); // 下载COS文件到服务器 $result = $file_class->download($file_url); // 服务器文件路径 $local_file_url = $result['local_file_url']; // 视频截帧图片存储路径 $screenshot_local_file_url = './temp/' . md5(microtime(true)) . '_img.jpg'; // 利用服务器ffmpeg命令截取视频帧数 $result = get_video_screenshot_by_ffmpeg($local_file_url, $screenshot_local_file_url, $time); // 将图片存储到COS $oss_file_dirname = 'uid' . $uid . '/video_screenshot'; $result = $file_class->uploadFile($screenshot_local_file_url, $oss_file_dirname); // 删除服务器视频文件 unlink($local_file_url); return $result; }