Ảnh chụp code (kiểu Carbon) API
Biến mã nguồn thành ảnh đẹp như carbon.now.sh: tô màu cú pháp cho 29 ngôn ngữ, 9 giao diện màu, khung cửa sổ, số dòng, tô sáng dòng.
Gửi code và nhận ảnh đoạn code trong khung cửa sổ kiểu macOS, sẵn sàng cho bài blog, slide, bài đăng mạng xã hội hay tin nhắn Zalo / Slack. Tô màu cú pháp dùng highlight.js (BSD-3) với 29 ngôn ngữ được nạp riêng từng cái (JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby, Swift, Kotlin, Dart, SQL, Bash, Shell, PowerShell, JSON, YAML, HTML / XML, CSS, SCSS, Markdown, Dockerfile, diff, INI / TOML, Lua, văn bản thường) và tự nhận diện với language=auto. Giao diện màu: dracula (mặc định), monokai, one-dark, github-dark, github-light, nord, night-owl, vscode-dark, solarized-light.
Tùy chọn: title trên thanh cửa sổ, window=false để bỏ khung, line_numbers=true cùng first_line, highlight_lines=3,5-7, font_size, line_height, tab_size, lề ngoài padding với màu background hoặc gradient chéo (background2), shadow, và max_columns (dòng dài hơn bị cắt). Chữ được vẽ từ đường nét phông JetBrains Mono (SIL OFL) có đủ tiếng Việt, nên chú thích như // Tính tổng hiển thị đúng dấu; ký tự không có trong phông nhúng (emoji, chữ Hán…) để trống kèm cảnh báo.
Định dạng: png (mặc định, scale 2 cho màn hình retina), svg (vector, ký tự là đường nét nên hiển thị giống nhau ở mọi nơi) hoặc json (SVG + PNG base64). Không dùng trình duyệt headless; tối đa 400 dòng.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
code | body|query | string | có | Mã nguồn (tối đa 30.000 ký tự, 400 dòng); có thể gửi body thô text/plain. | |
language | query|body | string | không | auto | auto hoặc một trong: javascript, typescript, python, java, c, cpp, csharp, go, rust, php, ruby, swift, kotlin, dart, sql, bash, shell, powershell, json, yaml, xml, css, scss, markdown, dockerfile, diff, ini, lua, plaintext (dùng được tên tắt như js, ts, py, sh, html). |
theme | query|body | string | không | dracula | dracula, monokai, one-dark, github-dark, github-light, nord, night-owl, vscode-dark, solarized-light. |
format | query|body | string | không | png | png, svg hoặc json. |
title | query|body | string | không | Tiêu đề cửa sổ, ví dụ tên file. | |
window | query|body | boolean | không | true | Vẽ thanh cửa sổ với ba nút tròn. |
line_numbers | query|body | boolean | không | false | Hiện số dòng. |
first_line | query|body | number | không | 1 | Số thứ tự của dòng đầu tiên. |
highlight_lines | query|body | string | không | Các dòng cần tô sáng, ví dụ 2,4-6. | |
font_size | query|body | number | không | 14 | Cỡ chữ, px (8–40). |
line_height | query|body | number | không | 1.6 | Chiều cao dòng, bội số của cỡ chữ (1–3). |
tab_size | query|body | number | không | 4 | Số dấu cách cho mỗi tab (1–8). |
padding | query|body | number | không | 32 | Lề ngoài, px (0–200). |
background | query|body | string | không | #abb8c3 | Màu nền ngoài hoặc transparent. |
background2 | query|body | string | không | Màu thứ hai để nền ngoài thành gradient chéo. | |
shadow | query|body | boolean | không | true | Đổ bóng mờ dưới cửa sổ. |
max_columns | query|body | number | không | 160 | Dòng dài hơn sẽ bị cắt (20–400). |
scale | query|body | number | không | 2 | Tỷ lệ điểm ảnh của PNG (1–4). |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/code-image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"const sum = (a, b) => a + b;\nconsole.log(sum(2, 3)); // 5","language":"javascript","format":"json"}'const res = await fetch('https://apibox.io.vn/v1/code-image', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"code": "const sum = (a, b) => a + b;\nconsole.log(sum(2, 3)); // 5",
"language": "javascript",
"format": "json"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/code-image",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"code": "const sum = (a, b) => a + b;\nconsole.log(sum(2, 3)); // 5", "language": "javascript", "format": "json"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/code-image');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"code":"const sum = (a, b) => a + b;\\nconsole.log(sum(2, 3)); // 5","language":"javascript","format":"json"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"language": "javascript",
"theme": "dracula",
"lines": 2,
"width": 344,
"height": 178,
"scale": 2,
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"344\" height=\"178\" viewBox=\"0 0 344 178\">…</svg>",
"png_base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArAAAAFkCAIAAABXYZ9F…",
"warnings": [],
"themes": [
"dracula",
"monokai",
"one-dark",
"github-dark",
"github-light",
"nord",
"night-owl",
"vscode-dark",
"solarized-light"
]
}
Ứng dụng
- Ảnh đoạn code cho bài blog, slide, mạng xã hội
- Bot gửi ảnh code lên Slack, Discord, Telegram, Zalo
- Tài liệu khóa học, bài hướng dẫn với định dạng thống nhất
- Ảnh minh họa tài liệu được tạo tự động trong CI
Hỏi đáp
Có dùng phông hay giao diện màu riêng được không?
Hiện chưa: ảnh luôn dùng JetBrains Mono và một trong 9 giao diện có sẵn để kết quả giống nhau ở mọi nơi. Bạn đổi được nền bên ngoài và tiêu đề cửa sổ.
Ngôn ngữ được nhận diện thế nào?
Với language=auto, highlight.js chấm điểm đoạn code theo các ngôn ngữ đã nạp và chọn ngôn ngữ khớp nhất; kết quả cho biết ngôn ngữ đã chọn. Đoạn code ngắn nên ghi rõ language.
Vì sao emoji bị thiếu?
Phông nhúng chỉ gồm chữ Latin (có tiếng Việt), Hy Lạp, ký hiệu, khung kẻ và ký hiệu toán. Ký tự thiếu được để trống và có cảnh báo khi dùng format=json.
API liên quan
Tạo mã QR
Tạo mã QR dạng PNG hoặc SVG chỉ với một request GET: link, văn bản, WiFi, danh thiếp vCard, e-mail, SMS, số điện thoại, toạ độ. Tuỳ chỉnh màu, kích thước.
|||Tạo mã vạch
Tạo mã vạch Code 128 cho tem nhãn, mã SKU, vận đơn chỉ với một request. Xuất SVG kèm dòng chữ hoặc PNG, tuỳ chỉnh chiều cao, độ rộng và màu sắc.
▭Ảnh placeholder
Lấy ảnh giữ chỗ đúng kích thước cho mockup và test: /v1/placeholder/600x400.png. Xuất SVG với chữ và màu tuỳ chỉnh, hoặc PNG một màu.