首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實現圖片裸露度檢測:基於膚色像素分析自動攔截成人內容

     編輯:PHP 綜合知識

技術原理

利用 ImageFilter 類 (由 Bakr Alsharif 開發) 分析圖片中膚色像素比例,依據膚色色調範圍 (HSV 色彩空間) 計算裸露機率分數 (0-100%)。支援 PNG、GIF、JPEG 格式。

核心程式碼實作

<?php
// 1. 引入檢測類別
require_once 'nf.php'; // 包含 ImageFilter 類別

// 2. 實例化
$filter = new ImageFilter();

// 3. 取得上傳檔案暫存路徑
$tmp_path = $_FILES['img']['tmp_name'];

// 4. 計算裸露分數
$score = $filter->GetScore($tmp_path);

// 5. 判斷邏輯 (閾值可依業務調整)
if (isset($score)) {
    if ($score >= 60) {
        // 疑似成人內容
        echo "圖片裸露度評分: {$score}%,疑似包含成人內容,上傳被拒絕。";
        // 記錄日誌、刪除暫存檔、回傳錯誤碼
        exit;
    } elseif ($score < 0) {
        echo "檢測錯誤,請重試。";
    } else {
        echo "圖片正常,裸露度評分: {$score}%。";
        // 繼續後續處理 (移動檔案、寫入資料庫...)
    }
}
?>

前端上傳表單

<form method="post" enctype="multipart/form-data" action="">
    上傳圖片: <input type="file" name="img" id="img" accept="image/*" required />
    <input type="submit" value="提交檢測" />
</form>

完整整合範例

<?php
// upload.php
require_once 'nf.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['img'])) {
    $allowed_types = ['image/jpeg', 'image/png', 'image/gif'];
    $file_type = $_FILES['img']['type'];
    
    if (!in_array($file_type, $allowed_types)) {
        die("僅支援 JPG/PNG/GIF 格式");
    }
    
    if ($_FILES['img']['error'] !== UPLOAD_ERR_OK) {
        die("上傳失敗,錯誤碼: " . $_FILES['img']['error']);
    }
    
    $filter = new ImageFilter();
    $score = $filter->GetScore($_FILES['img']['tmp_name']);
    
    if ($score === false || $score < 0) {
        die("圖片分析失敗");
    }
    
    if ($score >= 60) {
        // 記錄可疑上傳
        error_log("可疑圖片上傳: {$_FILES['img']['name']}, 分數: $score, IP: {$_SERVER['REMOTE_ADDR']}");
        die("圖片內容不符合規範 (裸露度評分: $score%)");
    }
    
    // 通過檢測,移動至永久儲存
    $dest = 'uploads/' . date('Ymd') . '_' . basename($_FILES['img']['name']);
    if (move_uploaded_file($_FILES['img']['tmp_name'], $dest)) {
        echo "上傳成功!檔案: $dest";
    } else {
        echo "檔案儲存失敗";
    }
}
?>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="img" accept="image/*" required>
    <button type="submit">上傳</button>
</form>

技術限制與補強策略

限制影響補強建議
膚色模型誤判臉部特寫、泳裝、藝術照可能誤判結合臉部偵測 (OpenCV) 排除臉部區域
黑白/風格化圖片色調分析失效加入邊緣/紋理特徵分析
動態閾值固定 60% 不適應所有場景建立人工標註樣本集,機器學習優化閾值
效能大圖分析耗時縮圖後分析、非同步佇列處理
繞過檢測攻擊者可加噪點、調色繞過引入深度學習模型 (NSFW Detector、TensorFlow)

現代替代方案

  • Google Cloud Vision API / AWS Rekognition / Azure Content Moderator:雲端 AI 服務,準確率極高、付費
  • OpenNSFW (Yahoo 開源):Caffe/TensorFlow 模型,可離線部署、GPU 加速
  • PHP-NSFW:基於 OpenNSFW 的 PHP 擴展/封裝

法律與合規提醒

自動檢測不能完全替代人工審核。請依據當地法規 (如中國《網絡安全法》、歐盟 GDPR、美國 COPPA) 建立完整內容審核機制:機器初篩 → 人工複核 → 申訴通道 → 定期模型更新。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved