Chuyển đến nội dung chính

Định dạng tệp

GIF là gì? 256 màu, ảnh động và nén LZW

GIF đã tồn tại từ năm 1987: giới hạn ở 256 màu nhưng vẫn sống khỏe nhờ ảnh động. Đây là cách nó hoạt động, vì sao nó tạo ra tệp nặng và khi nào nên chọn định dạng khác.

Tác giả: Hemen Dönüştür Editör EkibiNgày đăng: 9 phút đọc

Ảnh bìa bài hướng dẫn về định dạng GIF

GIF (Graphics Interchange Format) là một trong những định dạng ảnh lâu đời nhất trên web. Từ lâu nó đã nhường ảnh chụp cho JPG và đồ họa cho PNG, nhưng vẫn là thứ đầu tiên người ta nghĩ đến khi nói về những ảnh động ngắn lặp đi lặp lại. Bài viết này giải thích GIF ra đời thế nào, cách nén và ảnh động của nó hoạt động, giới hạn 256 màu thực sự có nghĩa là gì và bạn có thể cân nhắc những định dạng nào thay thế.

Sơ lược lịch sử

GIF được phát triển bởi CompuServe, một trong những dịch vụ trực tuyến lớn thời bấy giờ. Theo sổ đăng ký PRONOM của Cơ quan Lưu trữ Quốc gia Anh, phiên bản đầu tiên, GIF87a, được phát hành ngày 15 tháng 6 năm 1987. Phiên bản tiếp theo, GIF89a, lấy tên từ năm 1989; văn bản đặc tả, được PRONOM liệt kê và W3C lưu trữ, có ngày 31 tháng 7 năm 1990. Bản 89a bổ sung Graphic Control Extension, phần định nghĩa độ trễ khung hình, độ trong suốt và cách loại bỏ khung hình, cùng với các phần mở rộng cho chú thích, văn bản thuần và ứng dụng. Ảnh GIF động ngày nay được xây dựng trên những phần mở rộng này.

Chương nổi tiếng nhất trong câu chuyện của GIF là tranh chấp bằng sáng chế. GIF được nén bằng LZW, một thuật toán được Unisys cấp bằng sáng chế. Theo mô tả định dạng của Library of Congress, GIF trở nên tai tiếng vào năm 1994 khi Unisys bắt đầu thu phí cấp phép LZW. Điều đó dẫn đến việc phát triển PNG như một lựa chọn thay thế không vướng bằng sáng chế. Theo cùng nguồn này, bằng sáng chế của Unisys tại Mỹ hết hạn vào tháng 6 năm 2003, còn bằng sáng chế tại châu Âu và Nhật Bản hết hạn vào tháng 6 năm 2004, nên ngày nay dùng GIF không cần giấy phép.

GIF hoạt động như thế nào

Bảng màu và giới hạn 256 màu

GIF không lưu trực tiếp màu của từng điểm ảnh; nó lưu một chỉ số trỏ vào bảng màu (palette). Theo đặc tả, một bảng màu chứa tối đa 256 mục, mỗi mục là một màu RGB 24 bit. Một bảng toàn cục có thể áp dụng cho cả tệp, và mỗi khung hình cũng có thể có bảng cục bộ riêng. Logo và hình minh họa ít màu dễ dàng nằm gọn trong giới hạn này, còn ảnh chụp có hàng nghìn sắc độ sẽ lộ hiện tượng phân dải màu hoặc họa tiết hòa sắc khi bị giảm xuống 256 màu.

Nén LZW

Các chỉ số điểm ảnh được nén không mất dữ liệu bằng LZW, thuật toán dùng mã có độ dài thay đổi; đặc tả cho phép mã dài đến 12 bit. LZW hoạt động bằng cách thêm các chuỗi điểm ảnh lặp lại vào một từ điển, nên nó làm tốt với những vùng màu phẳng rộng và kém với ảnh chụp nhiều nhiễu.

Độ trong suốt

Trong GIF89a, Graphic Control Extension có thể đánh dấu một màu trong bảng màu là "trong suốt". Đây là độ trong suốt bật/tắt (nhị phân): một điểm ảnh hoặc hiện hoàn toàn, hoặc trong suốt hoàn toàn. Vì thế bóng đổ bán trong suốt và cạnh mềm trông răng cưa trong GIF, và một "quầng sáng" nhạt quanh viền trên nền màu là lỗi rất phổ biến.

Ảnh động

Một ảnh GIF động là chuỗi các khung hình trong một tệp duy nhất. Graphic Control Extension của mỗi khung hình quy định thời gian khung đó ở trên màn hình, tính bằng phần trăm giây, và cách vùng của nó được xóa trước khung hình tiếp theo. Thông tin lặp lại được lưu trong một phần mở rộng ứng dụng. Tùy chọn đan xen cho phép ảnh hiện dần ra trong khi tải.

Các cách loại bỏ khung hình

Đặc tả định nghĩa bốn giá trị cho cách xử lý vùng của một khung hình sau khi đã hiển thị: không quy định, giữ nguyên khung hình, khôi phục vùng về màu nền, và khôi phục vùng về trạng thái trước đó. Trong những ảnh động được làm tốt, chỉ vùng thay đổi được ghi thành khung hình mới, phần còn lại được giữ từ khung trước, và đó là điều giúp tệp nhỏ gọn. Vì vậy, các công cụ chỉnh sửa GIF phải làm việc trên những hình ảnh hoàn chỉnh được ghép theo các quy tắc này, chứ không phải trên từng khung thô riêng lẻ.

GIF được dùng rộng rãi đến mức nào?

Dữ liệu W3Techs tháng 10 năm 2026 cho thấy GIF có mặt trên 13,2% số trang web được theo dõi. Theo Web Almanac 2024 của HTTP Archive, 16,8% hình ảnh trên trang di động là GIF; báo cáo cho biết 32% trong số đó là ảnh động. Báo cáo cũng ghi nhận khoảng 6% tổng số yêu cầu hình ảnh là ảnh 1x1 điểm ảnh, nhiều khả năng là điểm theo dõi (tracking beacon) và GIF đệm khoảng trống, nên tỷ lệ cao của GIF không chỉ đến từ ảnh động.

Về hiệu quả, GIF tụt lại rất xa. Cùng báo cáo cho biết tệp GIF trung vị dùng 6,7 bit mỗi điểm ảnh, so với 3,8 của PNG, 2,0 của JPEG và 1,3 của WebP. Với GIF động, giá trị trung vị tăng lên 32,6 bit, còn GIF tĩnh ở mức 3,5 bit.

Có thể thay GIF bằng gì?

Hướng dẫn định dạng ảnh của MDN coi GIF là lựa chọn tốt cho hình ảnh và ảnh động cơ bản, nhưng đề xuất PNG cho ảnh tĩnh không mất dữ liệu và ảnh bảng màu, còn WebP, AVIF hoặc APNG cho chuỗi ảnh động. Với ảnh động dài hoặc được làm từ cảnh quay thực, video hiệu quả hơn nhiều: trong ví dụ trên web.dev, một tệp GIF 3,7 MB giảm xuống còn 551 KB khi ở dạng MP4 và 341 KB khi ở dạng WebM.

Nhu cầuKhuyến nghị
Logo tĩnh, biểu tượng, đồ họa màu phẳngPNG hoặc SVG
Ảnh động ngắn, ít màu (như biểu tượng đang tải)GIF, APNG hoặc WebP động
Ảnh động làm từ cảnh quay video hoặc quay màn hìnhVideo MP4 hoặc WebM tắt tiếng, phát lặp
Ảnh động phải chạy ở mọi nơi (email, nhắn tin)GIF; vẫn là định dạng có khả năng tương thích rộng nhất

Các ứng dụng email và một số ứng dụng nhắn tin không phát video hay hiển thị WebP động. Khả năng tương thích phổ quát đó mới là lý do thực sự giúp GIF tồn tại hơn ba thập kỷ.

Các vấn đề thường gặp

Tệp GIF quá nặng

Số khung hình, kích thước điểm ảnh và lượng chuyển động đều làm tăng trực tiếp dung lượng tệp. Thu nhỏ kích thước, cắt khung hình hoặc chỉ lấy một đoạn ngắn là những cách hiệu quả nhất; với các đoạn dài, chuyển sang video là lựa chọn tốt hơn.

Màu sắc bị phân dải hoặc lấm tấm

Đây là hệ quả tự nhiên của giới hạn 256 màu. Những dải chuyển màu mượt như bầu trời hay màu da bị ảnh hưởng nhiều nhất. Với nội dung dạng ảnh chụp, hãy dùng JPG, WebP hoặc video thay cho GIF.

Có quầng trắng quanh viền

Vì GIF trong suốt không thể bán trong suốt, một hình ảnh được chuẩn bị trên nền sáng sẽ lộ ra các sắc độ chuyển tiếp ở viền khi đặt lên nền tối. Với ảnh trong suốt có cạnh mềm, hãy dùng PNG hoặc WebP.

Ảnh động ngừng chạy sau khi chuyển đổi

PNG và JPG không mang được ảnh động, nên tệp GIF động khi chuyển sang một trong hai định dạng này chỉ giữ lại một khung hình.

Mẹo khi làm việc với GIF

  • Để lấy một ảnh tĩnh, hãy chuyển GIF sang PNG. Khung hình đầu tiên của GIF được lưu thành PNG không mất dữ liệu, giữ nguyên độ trong suốt.
  • Để thu nhỏ kích thước một ảnh GIF động, hãy dùng công cụ thay đổi kích thước ảnh. GIF động giữ nguyên mọi khung hình và thời gian hiển thị của chúng khi được đổi kích thước (tối đa 600 khung hình).
  • Để cắt một ảnh động, công cụ cắt ảnh áp dụng cùng một vùng cắt cho mọi khung hình và giữ nguyên thời gian của từng khung.
  • Để giảm dung lượng tệp, công cụ nén ảnh giữ GIF động ở dạng GIF với đầy đủ khung hình, còn GIF tĩnh mặc định được chuyển sang WebP để nhỏ hơn.
  • Để biến một ảnh khác thành GIF, hãy chọn GIF làm định dạng đích trong công cụ chuyển đổi hình ảnh. Kết quả là một khung hình duy nhất với tối đa 256 màu, và các vùng bán trong suốt được chuyển thành trong suốt bật/tắt.
  • Tất cả đều chạy ngay trong trình duyệt của bạn, nên tệp vẫn ở trên thiết bị của bạn và không bao giờ rời khỏi đó.

Câu hỏi thường gặp

GIF có mất dữ liệu không?

Nén LZW là không mất dữ liệu. Nhưng chuyển một ảnh đủ màu sang GIF đòi hỏi giảm xuống còn 256 màu, và mất mát xảy ra ở chính bước giảm màu đó.

GIF và GIF động có khác nhau không?

Định dạng là một. GIF có một khung hình là ảnh tĩnh, còn GIF có nhiều khung hình là ảnh động. Độ trễ khung hình và thông tin lặp lại được lưu trong các phần mở rộng bên trong tệp.

Vì sao GIF vẫn còn được dùng?

Vì nó chạy được gần như ở mọi nơi mà không cần thiết lập gì: trong trình duyệt, ứng dụng email, ứng dụng trò chuyện và phần mềm cũ. Các lựa chọn hiệu quả hơn hiện vẫn chưa có được khả năng tương thích đó trong mọi môi trường.

Chuyển GIF sang MP4 có hợp lý không?

Nếu bạn hiển thị nó trên website, thường là có. Trong ví dụ của web.dev, các bản video chỉ chiếm khoảng một phần bảy đến một phần mười dung lượng của GIF. Một video phát với các thuộc tính autoplay, loop, muted và playsinline sẽ hoạt động trên trang y như một ảnh GIF.

Một ảnh GIF có thể có bao nhiêu màu?

Mỗi bảng màu chứa tối đa 256 màu. Về mặt kỹ thuật, vì mỗi khung hình có thể mang bảng cục bộ riêng, một ảnh GIF nhiều khung hình có thể hiển thị tổng cộng nhiều màu hơn, nhưng trong một khung hình giới hạn vẫn là 256.

Nguồn tham khảo

Công cụ chuyển đổi liên quan

Tất cả bài viết