TL;DR

Nếu bạn dùng Termux và muốn xem ảnh mà không cần rời khỏi terminal, Chafa là câu trả lời. Tool này chuyển đổi ảnh thành ASCII art, Unicode block, hoặc Braille trực tiếp trong command line - và nếu terminal hỗ trợ, nó còn render ảnh chất lượng cao qua Sixels hay Kitty protocol. Cài đặt 1 lệnh, chạy ngay.

Vấn đề: xem ảnh trên Android terminal có khó không?

Khi làm việc trong Termux, mỗi lần cần xem ảnh là bạn phải thoát ra, mở ứng dụng gallery, tìm file, rồi quay lại. Nếu đang SSH hay đang xử lý batch file trên command line, quy trình này rất gián đoạn workflow.

Đây chính xác là bài toán mà Chafa (viết tắt của Character Art Facsimile) giải quyết: xem ảnh ngay trong cửa sổ terminal, không thoát ra ngoài, không mở app riêng.

Chafa là gì và hoạt động như thế nào?

Chafa là công cụ mã nguồn mở viết bằng C, chuyên chuyển đổi file ảnh thành dạng text-art để hiển thị trong terminal. Cách hoạt động cốt lõi là ánh xạ từng vùng pixel của ảnh sang ký tự Unicode phù hợp nhất về màu sắc và hình dạng.

Điểm mạnh của Chafa so với các tool tương tự là khả năng tự phát hiện terminal: nó tự kiểm tra xem terminal đang dùng có hỗ trợ Sixels, Kitty protocol, hay iTerm2 không. Nếu có, nó render ảnh với độ phân giải cao gần như ảnh gốc. Nếu không, nó fallback về Unicode block hoặc ASCII art - vẫn nhận ra được nội dung ảnh.

Termux terminal hiển thị lệnh pkg install chafa và kết quả chafa image.jpg với ảnh hoa và thành phố
Chafa trong Termux: lệnh pkg install và kết quả render ảnh thực tế

Chafa hỗ trợ đầy đủ các định dạng: JPEG, PNG, GIF (kể cả animated), AVIF, SVG, WebP, TIFF, JPEG XL, QOI, XWD. Về màu sắc, nó hỗ trợ Truecolor (24-bit), 256-color, 16-color và các mode tối giản hơn, với alpha transparency ở mọi mode.

Cài đặt Chafa trong Termux

Chafa có sẵn trong repository Termux. Bạn chỉ cần 4 bước:

# Bước 1: Cập nhật package list
pkg update && pkg upgrade -y

# Bước 2: Cài Chafa
pkg install chafa -y

# Bước 3: Cấp quyền truy cập storage (cần thiết để đọc ảnh từ /sdcard)
termux-setup-storage

# Bước 4: Kiểm tra cài đặt
chafa --version

Sau bước 3, Android sẽ hiện popup hỏi quyền truy cập file - chọn Allow. Sau đó ảnh trong bộ nhớ điện thoại sẽ truy cập được qua đường dẫn /sdcard/.

Các lệnh sử dụng cơ bản

Sau khi cài xong, di chuyển vào thư mục chứa ảnh và bắt đầu dùng:

# Di chuyển vào thư mục ảnh
cd /sdcard/Pictures

# Xem danh sách file
ls

# Hiển thị ảnh cơ bản
chafa image.jpg

# Xem help menu
chafa --help

Ngoài Pictures, bạn cũng có thể dùng Download, DCIM, hoặc bất kỳ thư mục nào chứa ảnh. Lệnh chafa image.jpg là cách đơn giản nhất - Chafa tự chọn chế độ tốt nhất cho terminal của bạn.

Tùy chỉnh output: symbol sets và color modes

Đây là nơi Chafa thực sự mạnh. Bạn có thể kiểm soát chính xác cách nó render ảnh:

Chọn symbol set

# ASCII art thuần túy (chỉ dùng ký tự ASCII)
chafa --symbols ascii image.jpg

# Unicode block characters (chất lượng cao hơn ASCII)
chafa --symbols block image.jpg

# Braille patterns (chi tiết cao, phù hợp ảnh có đường nét)
chafa --symbols braille image.jpg

# Tất cả symbol (Chafa tự chọn tốt nhất)
chafa --symbols all image.jpg

Chế độ màu sắc

# Truecolor (24-bit) - tốt nhất, cần terminal hỗ trợ
chafa --colors full image.jpg

# 256 màu
chafa --colors 256 image.png

# Đặt nền đen
chafa --bg black image.jpg

# Đảo ngược màu foreground và background
chafa --fg white --bg black image.jpg

Điều chỉnh kích thước

# Resize về 80x40 ký tự
chafa -s 80x40 image.jpg

# Fit theo chiều rộng terminal hiện tại
chafa -s $(tput cols)x image.jpg

Tính năng nâng cao: GIF, slideshow và grid

Xem GIF động

Chafa hỗ trợ animated GIF ngay trong terminal - không cần tool bên ngoài:

# Phát animated GIF
chafa --animate animation.gif

# Phát trong 10 giây
chafa --animate --duration 10 animation.gif

# Tốc độ 2x
chafa --animate --speed 2 animation.gif

Hiển thị nhiều ảnh dạng grid

# Hiển thị tất cả JPEG trong thư mục dạng grid
chafa *.jpg

# Hiển thị kèm tên file
chafa --labels *.jpg

Slideshow

# Slideshow, mỗi ảnh 5 giây
chafa --animate --duration 5 *.jpg

Protocol cao cấp (nếu terminal hỗ trợ)

# Sixels - chất lượng pixel cao
chafa --format sixels image.png

# Kitty Graphics Protocol
chafa --format kitty image.gif

# iTerm2 Inline Images Protocol
chafa --format iterm image.jpg

Termux mặc định không hỗ trợ các protocol này, nhưng nếu bạn dùng terminal emulator khác như Termux:Styling hay terminal có Sixels, các lệnh này sẽ cho kết quả gần như ảnh gốc.

Watch mode - theo dõi file thay đổi

# Auto-refresh khi file ảnh thay đổi
chafa --watch image.jpg

Tính năng này hữu ích khi bạn đang xử lý ảnh bằng script và muốn xem kết quả real-time.

Giới hạn cần biết

Chafa hoạt động tốt nhưng có một vài điểm cần lưu ý:

  • Chất lượng phụ thuộc terminal: Trên Termux mặc định, bạn sẽ thấy Unicode block - đẹp nhưng không pixel-perfect. Sixels và Kitty cần terminal hỗ trợ riêng.
  • Truecolor cần terminal hỗ trợ: Termux hỗ trợ Truecolor, nên màu sắc sẽ render tốt. Nhưng trên terminal cũ hơn, màu có thể bị giảm xuống 256 hoặc 16.
  • Không tích hợp với w3m: Chafa không hoạt động với w3m inline image display - cần workaround phức tạp nếu muốn xem ảnh trong browser text-based.
  • Version trong repo: Termux thường có version khá mới của Chafa. Nhưng nếu cần tính năng mới nhất, có thể compile từ source trên GitHub repo.

Ai nên dùng Chafa?

Chafa không phải cho tất cả mọi người, nhưng với một số nhóm cụ thể thì nó gần như không thể thiếu:

  • Developer dùng Termux để viết script: Khi xử lý batch ảnh (resize, rename, watermark), Chafa cho phép preview kết quả ngay trong terminal mà không cần thoát ra.
  • Người dùng SSH vào server từ điện thoại: Không có GUI, cần xem log screenshot hay output ảnh từ script - Chafa là giải pháp duy nhất không cần X11 forwarding.
  • Người học Linux/Bash trên Android: Cài Chafa là cách thú vị để khám phá sức mạnh của Unicode terminal và ANSI escape codes.
  • CTF và security researcher: Phân tích ảnh nhanh trong pipeline script mà không cần mở GUI viewer.

Nếu bạn chỉ cần xem ảnh bình thường trong cuộc sống hàng ngày, gallery app Android vẫn là lựa chọn tốt hơn. Chafa dành cho những ai đã sống trong terminal.

Chafa so với các tool khác

Termux có một vài tool xem ảnh trong terminal. Điểm khác biệt của Chafa:

  • timg và viu: Cả hai hỗ trợ Kitty protocol. Chafa hơn ở chỗ hỗ trợ đồng thời cả Sixels, Kitty, và iTerm2 trong cùng một binary, với fallback tự động.
  • img2txt và catimg: Tool đơn giản hơn, thường chỉ output ASCII thuần. Chafa cho chất lượng Unicode mosaic tốt hơn đáng kể.
  • Điểm nổi bật của Chafa: Unicode mosaic mode - không cần protocol đặc biệt nhưng chất lượng cao hơn hẳn ASCII hoặc chỉ dùng U+2580 (upper half block).

Kết

Chafa là một trong những tool nhỏ nhưng giải quyết đúng vấn đề: xem ảnh trong Termux mà không phá vỡ workflow terminal. Cài đặt 1 lệnh, chạy ngay, và bạn sẽ ngạc nhiên với chất lượng ảnh Unicode ngay trong cửa sổ terminal trên điện thoại Android.

Thử ngay bằng: pkg install chafa -y && chafa /sdcard/DCIM/Camera/$(ls /sdcard/DCIM/Camera/ | head -1)

via Termux Achik