webp能將原圖壓縮30%左右還能保持清楚。所以正在被越來越多的人喜歡。
pb要增這個(gè)功能,第一步:找到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 格式(不影響原始文件)
 */第二步:請(qǐng)找到如下代碼(大概率出現(xiàn)在函數(shù) handleFile() 或 saveFile() 中):
找到:
$this->stateInfo = $this->stateMap[0];
后添加:
$this->convertToWebP(); // 上傳成功后生成 .webp 副本
效果如:
$this->stateInfo = $this->stateMap[0]; $this->convertToWebP(); // 上傳成功后生成 .webp 副本
第三步:funtion中的file.php中添加一個(gè)函數(shù)
// 添加一個(gè)新的函數(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':
            // 對(duì)于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;
}第四步:在// 處理并移動(dòng)上傳文件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); // 獲取文件站點(diǎn)路徑
    return $save_file;Ok了,我們現(xiàn)在來測(cè)試一下上傳圖片。
我們的網(wǎng)站后臺(tái)默認(rèn)有一個(gè)留言的提醒數(shù)據(jù):但是如果要有多個(gè)留言表單,那么我們自定義的留言表單卻沒有這個(gè)...
在之前的文章中,我們有講過,如何使用擴(kuò)展字段來此入HTML代碼并添加預(yù)覽功能。文章鏈接可查看:https://ww...
以下內(nèi)容來源于PB交流QQ群。第一:NGINX配置。#攔截常見敏感后臺(tái)路徑訪問(例如dede、admin、wp-login等),...
在外貿(mào)網(wǎng)站建設(shè)中,我們會(huì)遇到有客戶說需要用戶前端留言的時(shí)候可以上傳自定義的文件或者圖片等資料。那么這...