webp能將原圖壓縮30%左右還能保持清楚。所以正在被越來越多的人喜歡。
pb要增這個功能,第一步:找到ueditor中的Uploader.class.php,任意處添加函數(shù)。
/** * 將圖片轉(zhuǎn)換為WebP格式 */ private function convertToWebP() { $originalFilePath = $this->filePath; // 保存原始文件路徑 $webpFilePath = preg_replace('/\\\\\\\\.(jpg|jpeg|png)$/i', '.webp', $this->filePath); $webpFullName = preg_replace('/\\\\\\\\.(jpg|jpeg|png)$/i', '.webp', $this->fullName); $webpFileName = preg_replace('/\\\\\\\\.(jpg|jpeg|png)$/i', '.webp', $this->fileName); if ($this->fileType === '.jpg' || $this->fileType === '.jpeg') { $image = imagecreatefromjpeg($this->filePath); } elseif ($this->fileType === '.png') { $image = imagecreatefrompng($this->filePath); } else { return false; } if ($image) if (imagewebp($image, $webpFilePath)) { $this->filePath = $webpFilePath; $this->fullName = $webpFullName; $this->fileName = $webpFileName; $this->fileType = '.webp'; $this->fileSize = filesize($webpFilePath); imagedestroy($image); unlink($originalFilePath); // 刪除原始文件而不是WebP文件 return true; } imagedestroy($image); } return false; } /** * 轉(zhuǎn)換上傳的圖片為 WebP 格式(不影響原始文件) */
第二步:請找到如下代碼(大概率出現(xiàn)在函數(shù) handleFile()
或 saveFile()
中):
找到:
$this->stateInfo = $this->stateMap[0];
后添加:
$this->convertToWebP(); // 上傳成功后生成 .webp 副本
效果如:
$this->stateInfo = $this->stateMap[0]; $this->convertToWebP(); // 上傳成功后生成 .webp 副本
第三步:funtion中的file.php中添加一個函數(shù)
// 添加一個新的函數(shù)用于轉(zhuǎn)換圖片為WebP格式 function convert_to_webp($src, $dest, $quality = 80) { $info = getimagesize($src); $is_converted = false; switch ($info['mime']) { case 'image/jpeg': $image = imagecreatefromjpeg($src); $is_converted = imagewebp($image, $dest, $quality); imagedestroy($image); break; case 'image/gif': // 對于GIF文件,直接返回false,不進(jìn)行WebP轉(zhuǎn)換 return false; break; case 'image/png': $image = imagecreatefrompng($src); $is_converted = imagewebp($image, $dest, $quality); imagedestroy($image); break; default: return false; } return $is_converted; }
第四步:在// 處理并移動上傳文件function handle_upload中的末尾找到并修改,
// 如果是圖片 if (is_image($file_path)) { // 進(jìn)行等比例縮放 if (($reset = resize_img($file_path, $file_path, $max_width, $max_height)) !== true) { return $reset; } // 圖片打水印 if ($watermark) { watermark_img($file_path); } } return $save_file;
改成:
// 如果是圖片 if (is_image($file_path)) { // 進(jìn)行等比例縮放 if (($reset = resize_img($file_path, $file_path, $max_width, $max_height)) !== true) { return $reset; } // 圖片打水印 if ($watermark) { watermark_img($file_path); } // 轉(zhuǎn)換為WebP格式 $webp_path = preg_replace('/\\.\\w+$/', '.webp', $file_path); if (!convert_to_webp($file_path, $webp_path)) { // 如果轉(zhuǎn)換失敗,保留原始文件格式 $webp_path = $file_path; } else { // 刪除原始格式的圖片文件 if (file_exists($file_path)) { unlink($file_path); } $file_path = $webp_path; } } // 返回WebP格式的文件路徑 $save_file = str_replace(ROOT_PATH, '', $file_path); // 獲取文件站點路徑 return $save_file;
Ok了,我們現(xiàn)在來測試一下上傳圖片。
我們的網(wǎng)站后臺默認(rèn)有一個留言的提醒數(shù)據(jù):但是如果要有多個留言表單,那么我們自定義的留言表單卻沒有這個...
在之前的文章中,我們有講過,如何使用擴(kuò)展字段來此入HTML代碼并添加預(yù)覽功能。文章鏈接可查看:https://ww...
以下內(nèi)容來源于PB交流QQ群。第一:NGINX配置。#攔截常見敏感后臺路徑訪問(例如dede、admin、wp-login等),...
在外貿(mào)網(wǎng)站建設(shè)中,我們會遇到有客戶說需要用戶前端留言的時候可以上傳自定義的文件或者圖片等資料。那么這...