Trình tạo sprite sheet
Thả một loạt hình ảnh và trình tạo sẽ sắp chúng trên một lưới đều rồi vẽ một PNG sprite sheet duy nhất ngay trong trình duyệt, sau đó xuất CSS với một offset background-position cho mỗi sprite. Mọi thứ chạy cục bộ trên canvas, nên không có gì được tải lên máy chủ. Hữu ích cho bộ biểu tượng, khung hình game retro và các trạng thái giao diện khi bạn muốn một tệp duy nhất thay vì nhiều hình ảnh rời. Bạn kiểm soát số cột, kích thước ô, khoảng đệm giữa các ô và nền (trong suốt, trắng hoặc đen).
Sprite sheet được dựng như thế nào
-
1
Thả hình ảnh của bạn
Thêm tệp PNG, JPG hoặc WebP. Sắp lại thứ tự bằng nút lên/xuống hoặc xóa khung bất kỳ; bảng được dựng lại ngay lập tức.
-
2
Thiết lập lưới
Chọn số cột; số hàng suy ra từ số hình bạn đã thêm. Mỗi hình được co giãn để vừa một ô vuông, giữ nguyên tỉ lệ và căn giữa.
-
3
Chỉnh kích thước ô và khoảng đệm
Chọn kích thước ô tính bằng pixel và thêm khoảng đệm giữa các ô để các sprite kề nhau không lấn sang nhau khi co giãn.
-
4
Tải PNG và sao chép CSS
Lưu sprite sheet thành một PNG duy nhất và sao chép các lớp CSS được tạo, mỗi hình một quy tắc `.spr-ten` với chiều rộng, chiều cao và background-position.
Cách bố cục hoạt động
Trình tạo dùng một bố cục duy nhất và dễ đoán: lưới đều. Bạn đặt số cột, còn số hàng là làm_tròn_lên(hình / cột). Mỗi ô có cùng kích thước vuông (kích thước ô bạn chọn), nên mỗi hình được co giãn để vừa ô của nó, giữ nguyên tỉ lệ, rồi căn giữa. Hình có kích thước khác nhau đều nằm trong các ô bằng nhau, đúng như sprite CSS với background-position mong đợi.
| Điều khiển | Phạm vi | Tác dụng |
|---|---|---|
| Số cột | 1 đến 16 | Sprite trên mỗi hàng; số hàng tính tự động |
| Kích thước ô | 32 đến 512 px | Ô vuông mà mỗi hình được đưa vừa vào |
| Khoảng đệm | 0 đến 64 px | Khoảng trống trong suốt giữa các ô để tránh lấn khi co giãn |
| Nền | Trong suốt / Trắng / Đen | Phần tô phía sau sprite trong PNG đầu ra |
Dạng CSS được tạo
Mỗi hình trở thành một lớp mang tên tệp (.spr-<ten>), kích thước bằng ô và dịch tới ô của nó. Với bốn cột, kích thước ô 128 px và không khoảng đệm, bảng trông như sau:
.spr-idle { width: 128px; height: 128px; background: url(spritesheet.png) -0px -0px; }
.spr-walk { width: 128px; height: 128px; background: url(spritesheet.png) -128px -0px; }
.spr-run { width: 128px; height: 128px; background: url(spritesheet.png) -256px -0px; }
.spr-jump { width: 128px; height: 128px; background: url(spritesheet.png) -384px -0px; }
.spr-fall { width: 128px; height: 128px; background: url(spritesheet.png) -0px -128px; }
Offset dịch chuyển theo hai chiều: các sprite lấp đầy từng hàng từ trái sang phải, rồi xuống hàng kế tiếp. Lưu PNG là spritesheet.png cạnh CSS của bạn (hoặc sửa url(...) cho khớp đường dẫn của bạn).
Khoảng đệm và lấn màu
Các sprite xếp sát cạnh nhau có thể lấn sang nhau khi trình duyệt co giãn bảng (tỉ lệ pixel không nguyên, biến đổi CSS). Thêm 2 đến 4 pixel khoảng đệm giữa các ô để pixel lân cận không rò sang.
Màn hình mật độ cao (retina)
Không có xuất 2x tự động, nhưng bạn có thể tạo bảng sắc nét hơn một cách đơn giản: chọn kích thước ô lớn hơn (ví dụ 256 px thay vì 128 px) để mỗi sprite mang nhiều pixel hơn, rồi hiển thị nó ở một nửa kích thước CSS. Nhờ đó bạn có sprite sắc nét trên màn hình mật độ cao mà không cần một lượt riêng.
Sprite sheet hay lựa chọn thay thế
- Sprite sheet: bộ biểu tượng cổ điển trong CSS, khung hình game HTML5 và các trang được lợi khi gộp nhiều hình nhỏ vào một tệp.
- Sprite SVG (symbol): tốt hơn cho biểu tượng giao diện hiện đại, co giãn không mất chất lượng, nhận
fillcủa CSS, không phải xoay xở vớibackground-position. - Phông biểu tượng: hạn chế, nhưng vẫn dùng cho biểu tượng một màu cỡ nhỏ xíu.
- Tệp riêng lẻ với HTTP/2 hoặc HTTP/3: ghép kênh khiến số lượng yêu cầu ít quan trọng hơn trước.
Câu hỏi thường gặp
Hình ảnh của bạn ở lại trong trình duyệt. Trong luồng nhiều bước, trình duyệt này tạm giữ các tệp hình ảnh đã chọn và bố cục trong thẻ này tối đa 30 phút. Không có gì được gửi đến máy chủ hay thêm vào URL.
Có, nhưng SVG nội tuyến hoặc sprite SVG <symbol> thường hợp hơn với các framework theo thành phần. Sprite sheet CSS phát huy tốt khi nhiều hình được hiển thị cùng lúc trên trang tĩnh.
Đặt số cột bằng số khung để mỗi khung nằm trên một hàng, rồi điều khiển bằng animation-timing-function: steps(N) của CSS và một background-position nhảy từng ô. Phù hợp cho hoạt ảnh lặp ngắn (biểu tượng tải, trạng thái nghỉ).
Mỗi ô của lưới có cùng kích thước vuông (kích thước ô bạn chọn), nên mỗi hình được đưa vừa vào ô của nó và căn giữa. Nếu các sprite của bạn đã là hình vuông giống nhau, hãy đặt kích thước ô tương ứng và chúng sẽ đi qua nguyên vẹn.
Công cụ liên quan
Trình thay đổi kích thước ảnh hàng loạt
Kéo thả nhiều ảnh, căn vừa hoặc kéo giãn theo kích thước mục tiêu, rồi xuất JPG, PNG hoặc WebP trong một file ZIP. Mọi xử lý ở lại trong trình duyệt.
Công cụ tăng độ phân giải ảnh
Phóng to ảnh độ phân giải thấp lên 2×, 3× hoặc 4× bằng siêu phân giải AI hoặc nội suy cổ điển, đồng thời giữ các chi tiết quan trọng.
Trình đổi kích thước ảnh
Đổi kích thước ảnh theo số pixel chính xác hoặc theo phần trăm mà vẫn giữ tỷ lệ khung hình. Phù hợp để chuẩn bị nhiều ảnh, không cần tải lên.
Nén GIF
Giảm kích thước GIF động trong trình duyệt bằng cách thu nhỏ kích thước, giữ ít khung hình hơn và chỉnh chất lượng mã hóa. Xem trước vòng lặp trước khi tải xuống.
Trình tạo chữ graffiti
Tạo chữ graffiti theo kiểu tag, bong bóng, khối, stencil, neon và wild. Chỉnh màu rồi xuất PNG hoặc SVG ngay trong trình duyệt.
Trình tạo thẻ tên
Tạo tối đa 60 thẻ tên có thể in từ danh sách Tên | dòng thứ hai. Chọn 8 thẻ hoặc 15 nhãn trên mỗi trang A4 hay US Letter rồi in ngay trên thiết bị của bạn.