01 · PNG 中位切分調色盤量化與 Floyd-Steinberg 誤差擴散
Module 01 · PNG-8 Median-Cut & Deflate
SlimCodec 在瀏覽器記憶體中直接掃描 RGBA 像素矩陣,利用三維色彩空間中位切分(Median-Cut)將 24-bit 真彩色收斂為 16 至 256 色索引調色盤,配合 Floyd-Steinberg 誤差擴散與 CompressionStream Deflate 壓縮,將 PNG 體積縮減 55%–80% 且上傳 0 bytes。
Palette Split = argmax_{R,G,B} (MaxChannel - MinChannel) at Median Pixel Count
Dither Error (x,y) = [7/16 → (x+1,y), 3/16 → (x-1,y+1), 5/16 → (x,y+1), 1/16 → (x+1,y+1)]
02 · WebP / JPEG 視覺感知量化與 EXIF 隱私元資料剝離
Module 02 · Perceptual WebP & JPEG
SlimCodec 透過離屏 Canvas 重建純淨像素緩衝區,100% 自動剝離相機 EXIF、GPS 經緯度與縮圖冗餘區塊,並支援 1%–100% 品質因子與 4K/1080p/720p 雙三次下採樣,在 1 second 內輸出高壓縮比 WebP 或 JPEG 檔案。
Output Bytes = Canvas2D.toBlob(mime="image/webp"|"image/jpeg", quality ∈ [0.01, 1.00])
Privacy Guarantee = 100% EXIF / GPS / IPTC / XMP Metadata Stripped (0 bytes leaked)
03 · 即時峰值訊噪比 (PSNR) 與結構相似性 (SSIM) 客觀畫質核驗
Module 03 · PSNR & SSIM Telemetry
SlimCodec 在每次圖片壓縮後於 10 ms 內自動解碼壓縮流並與原始 RGBA 緩衝區逐像素比對(0 bytes 上傳),精確計算均方誤差(MSE)、峰值訊噪比(PSNR,單位 dB)與結構相似性指數(SSIM,0–1),幫助使用者在 40 dB 以上無感區間平衡體積與畫質。
MSE = (1 / (3·W·H)) · Σ [(R₁-R₂)² + (G₁-G₂)² + (B₁-B₂)²]
PSNR (dB) = 10 · log₁₀(255² / MSE) | SSIM = [(2μₓμᵧ+C₁)(2σₓᵧ+C₂)] / [(μₓ²+μᵧ²+C₁)(σₓ²+σᵧ²+C₂)]
04 · 音訊多相重採樣與 4-Bit IMA ADPCM (0x0011) 硬體級壓縮
Module 04 · 4-Bit IMA ADPCM Audio
SlimCodec 利用 OfflineAudioContext 將 48 kHz 立體聲平滑下採樣至 44.1 kHz、22.05 kHz 或 16 kHz,並內建純 JavaScript 實作的 4-bit IMA ADPCM(RIFF 0x0011 規範)自適應差分脈衝編碼器,在 0 bytes 上傳下實現 75%–88% 的確定性音訊瘦身。
ADPCM Step Index = clamp(Index + IndexTable[Nibble & 0x07], 0, 88)
Compression Ratio = 16-bit PCM (176.4 KB/s) → 4-bit Mono 22.05kHz ADPCM (11.1 KB/s, -93.7% bytes)
05 · 影片解析度縮放、幀率抽幀與 VP9 / MP4 碼率重編碼
Module 05 · Video Bitrate & FPS Transcoder
SlimCodec 基於 HTMLCanvasElement.captureStream 與 MediaRecorder 硬體編碼管線,支援將 4K/1080p 影片按比例縮放至 720p/480p,限制幀率為 30 fps 或 24 fps,並將目標碼率鎖定在 300 kbps–2.5 Mbps,全程在瀏覽器沙箱內完成 MP4/WebM 瘦身。
Target Bitrate = VideoBitsPerSecond ∈ {2500k, 1200k, 600k, 300k} + AudioBitsPerSecond (64k)
Estimated Size(MB) = (TargetBitrate_kbps × Duration_seconds) / 8192
06 · 零上傳記憶體沙箱與嚴格 CSP 安全基線
Module 06 · Zero-Upload Sandbox
SlimCodec 遵循 default-src 'none' 的嚴格 Content-Security-Policy 與 SHA-256 腳本簽章,所有圖片、音訊與影片均透過 FileReader 與 URL.createObjectURL 在本地記憶體處理,0 bytes 資料離開使用者裝置,歷史配置僅保存在瀏覽器 localStorage。
Network Upload = 0 bytes (100% Client-Side ArrayBuffer & Blob URL Processing)
Security Baseline = CSP default-src 'none'; script-src 'self' 'sha256-...'; X-Frame-Options: DENY