So sánh hai ảnh API
So sánh hai ảnh theo từng điểm ảnh (khoảng cách màu theo cảm nhận, bỏ qua khử răng cưa) và cho biết tỷ lệ điểm ảnh thay đổi, vùng thay đổi và ảnh khác biệt được tô màu.
API so sánh ảnh đối chiếu hai ảnh PNG hoặc JPEG cùng kích thước, ví dụ ảnh chụp một trang web trước và sau khi sửa. API dùng pixelmatch, thuật toán của nhiều công cụ kiểm thử giao diện: màu được so sánh trong không gian cảm nhận với ngưỡng threshold (0 = tuyệt đối, mặc định 0,1), và khác biệt do khử răng cưa được bỏ qua trừ khi include_aa=true.
Kết quả JSON cho biết hai ảnh có giống hệt không, bao nhiêu điểm ảnh khác và chiếm bao nhiêu phần trăm, cùng khung bao vùng thay đổi. output=image trả về chính ảnh khác biệt: ảnh thứ nhất làm mờ, điểm ảnh thay đổi tô đỏ, khử răng cưa tô vàng; include_image=true thêm ảnh đó dạng base64 vào JSON.
Ảnh khác kích thước sẽ được báo; resize=true thu phóng ảnh thứ hai về kích thước ảnh thứ nhất trước khi so sánh. Mỗi ảnh tối đa 12,5 megapixel.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
a | body | file | có | Ảnh thứ nhất (trường multipart a, hoặc a_base64). | |
b | body | file | có | Ảnh thứ hai (b / b_base64). | |
threshold | body|query | number | không | 0.1 | Ngưỡng khác màu 0–1. |
include_aa | body|query | boolean | không | false | Tính cả khác biệt do khử răng cưa. |
output | body|query | string | không | json | json hoặc image (ảnh khác biệt PNG). |
resize | body|query | boolean | không | false | Thu phóng b theo a khi khác kích thước. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/image-diff" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "0=@./my-file"const form = new FormData();
form.append('0', fileInput.files[0]);
const res = await fetch('https://apibox.io.vn/v1/image-diff', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
body: form,
});
console.log(await res.json());import requests
res = requests.post(
"https://apibox.io.vn/v1/image-diff",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"0": open("my-file", "rb")},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/image-diff');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_POSTFIELDS => ['0' => new CURLFile('my-file')],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"identical": false,
"width": 1200,
"height": 630,
"diff_pixels": 758,
"diff_percent": 0.1003,
"threshold": 0.1,
"bounding_box": {
"x": 409,
"y": 327,
"width": 324,
"height": 58
}
}
Ứng dụng
- Kiểm thử hồi quy giao diện trong CI
- Phát hiện thay đổi bất thường trên trang web được theo dõi
- So sánh bản thiết kế với giao diện đã làm
- Kiểm tra xử lý ảnh có giữ chất lượng
Hỏi đáp
Nên chọn ngưỡng nào?
0,1 với ảnh chụp màn hình; 0 để phát hiện mọi thay đổi; 0,2–0,3 với ảnh chụp và JPEG có nhiễu nén.
Hai ảnh có cần cùng kích thước không?
Có nếu muốn so sánh chính xác; resize=true giúp so được nhưng thêm sai khác do nội suy.
API có tự chụp màn hình không?
Không, bạn gửi ảnh lên; chụp màn hình cần dịch vụ trình duyệt.
API liên quan
Webhook Tester
Tạo một URL riêng ghi lại mọi request HTTP gửi tới nó – method, header, query, body – rồi xem trực tiếp trên trình duyệt hoặc qua API.
👤Dữ liệu giả tiếng Việt
Dữ liệu test tiếng Việt như thật: họ tên, địa chỉ theo bản đồ hành chính 2025, số di động theo nhà mạng, CCCD và MST đúng cấu trúc, công ty, tài khoản ngân hàng.
{?}Dữ liệu mẫu từ JSON Schema
Sinh JSON mẫu như thật từ JSON Schema (kiểu, format, enum, pattern, khoảng giá trị, $ref, oneOf / allOf), có kiểm tra lại theo schema.