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