Số 21
TÚI CÀN KHÔN IT

Làm hoạt hình đơn giản với GIF
Hoàng Ngọc Giao

Khi thiết kế trang web hoặc giao diện người dùng (user interface) cho đĩa CD, bất cứ khi nào muốn có cái chi nhúc nhích, động đậy một chút cho vui mắt, bạn nên nghĩ ngay đến dạng thức hình ảnh GIF (đọc như là "jif").

GIF, viết tắt của Graphics Interchange Format, là dạng thức hình ảnh được thiết kế bởi CompuServe, một tổ chức chuyên cung cấp dịch vụ trực tuyến (online service) tại Mỹ, rất nổi tiếng vào cuối thập niên 1980, đầu thập niên 1990, trước thời kỳ bùng nổ mạng Internet. Vào thời ấy, máy tính có khả năng hiển thị đồng thời 256 màu đã thuộc vào loại cao sang ghê lắm, nên ta không có gì phải ngạc nhiên khi hình ảnh ở dạng thức GIF chỉ có thể có tối đa 256 màu.

Dạng thức GIF đầu tiên có tên gọi GIF87a chỉ chứa được một khung hình (frame) duy nhất. Ngày nay, dạng thức GIF được dùng trong mọi công cụ đồ họa trên máy tính đều là GIF89a. Một tập tin GIF89a bao gồm nhiều khung hình, tương tự như một đoạn phim, do đó được mệnh danh là Animated GIF. Dân ta thường gọi đó là GIF động (đậy).

Tại sao dùng GIF?

Trong dạng thức GIF, màu sắc tại mỗi điểm ảnh (pixel) được biểu diễn tối đa bởi 8 bit, ứng với 28 = 256 trị số khả dĩ (từ 0 đến 255). Trị số ấy cho biết vị trí trong một bảng màu (palette) gồm 256 màu. Nếu hình có ít màu hơn, số bit dành cho mỗi điểm ảnh có thể ít hơn. Chẳng hạn, với hình GIF trắng đen, mỗi điểm ảnh chỉ cần 1 bit, ứng với 21 = 2 trị số khả dĩ (2 màu). Nếu hình GIF có ít hơn 16 màu, mỗi điểm ảnh có thể được biểu diễn bởi 4 bit, ứng với 24 = 16 trị số, trỏ đến các vị trí trong một bảng màu gồm 16 màu. Số bit dùng cho một điểm ảnh thường được gọi là chiều sâu màu (color depth).

Các dạng thức hình ảnh có màu sắc thực (true color), như JPG chẳng hạn, thường có chiều sâu màu là 24 bit, ứng với 224 = 16.777.216 màu sắc khả dĩ (vượt xa khả năng cảm nhận màu sắc của mắt người!). Ngày nay, khi hầu hết máy tính đều thể hiện được màu sắc thực, lẽ ra dạng thức hình ảnh GIF xưa cũ chẳng còn đất sống. Thế nhưng, nếu thường lui lại các trang web ưa thích, bạn sẽ nhận thấy hình ảnh ở dạng thức GIF cũng nhiều như hình ảnh có màu sắc thực ở dạng thức JPG. Phải chăng thiên hạ vẫn còn nhiều người... hoài cổ?

Dạng thức JPG nổi tiếng ở chỗ nó cho phép ta giảm mạnh kích thước tập tin hình ảnh bằng cách giảm chất lượng màu sắc. Với mức độ giảm hợp lý, "người trần mắt thịt" không thể nhận ra sự khác biệt của hình ảnh JPG so với hình ảnh gốc. Trong khi đó, giải thuật nén dùng cho hình ảnh GIF là giải thuật thông thường, không để mất một chút dữ liệu nào. Có thể bạn không tin: Sau khi vẽ hình bằng công cụ nào đó, nếu lưu hình ảnh ở dạng GIF, có khi ta được tập tin nhỏ gọn hơn hẳn so với trường hợp JPG. Số là dạng thức GIF thích hợp với hình ảnh có màu sắc chân phương, rõ rệt từng mảng miếng, đường nét trong khi dạng thức JPG lại thích hợp với hình có màu sắc phức tạp như hình chụp bởi máy ảnh (photorealistic image). Chẳng hạn, nếu tạo hình một cái nút bấm (button) đơn giản và lưu ở cả hai dạng JPG và GIF, bạn sẽ thấy tập tin JPG lớn hơn tập tin GIF. Bạn có thể gia tăng độ nén của dạng JPG để cạnh tranh với dạng GIF nhưng chắc chắn bạn sẽ thu được một kết quả nhòe nhoẹt, lốm đốm, trông rất khó chịu.

Với GIF, ta có thể quy định một màu nào đó trong hình là màu trong suốt (cho thấy màu "ở phía sau" nó) trong khi với JPG thì không thể. Vì vậy, nút bấm hình tròn ở dạng JPG sẽ luôn được bao bởi một khung chữ nhật, trừ khi bạn cho màu nền của nó tiệp với màu xung quanh. Cách làm này trở nên vô hiệu khi bạn đặt hình cái nút bấm ấy trên một nền "ca-rô" như khăn trải bàn hoặc nền có dạng sần sùi như cây gỗ chẳng hạn. Lúc ấy, GIF là lựa chọn duy nhất.

Trên tất cả, GIF có thể chứa nhiều khung hình trong khi JPG thì không. Mở xem một tập tin GIF động bằng trình duyệt, bạn thấy nó "biểu diễn văn nghệ" ngay tức thì. Bạn không cần cài đặt phần mềm bổ sung nào cả. Trình duyệt web tự động lưu hình ảnh GIF trong bộ nhớ đệm nên nếu bạn dùng một hình ảnh GIF nhiều lần trên trang web, trình duyệt chỉ tải xuống hình ảnh ấy một lần duy nhất. Do vậy, GIF động rất thích hợp để tạo ra các chi tiết chớp nháy để trang trí đây đó trên trang web của bạn. Cần nói thêm rằng GIF động thuộc loại "phim câm" nên nó có lãnh địa riêng, không phải là đối thủ cạnh tranh với dạng thức SWF của Macromedia Flash.

Các công cụ làm GIF động

Vì dạng thức GIF đã có từ thời... "hồng hoang" nên những công cụ đồ họa cho phép lưu hình ảnh ở dạng GIF nhiều vô kể. Riêng chuyện làm GIF động, bạn có thể tìm lại những "đồ cổ" vẫn chạy tốt gần... chục năm nay như Animator Pro hoặc Animator Studio (của hãng Autodesk). Hai công cụ này đều cho phép bạn vẽ từng khung hình để tạo nên hoạt cảnh tùy ý và lưu thành nhiều tập tin GIF đánh số liên tiếp (mỗi tập tin GIF chứa một khung hình). Sau đó, bạn có thể dùng công cụ khác để lắp ráp những tập tin GIF ấy thành một tập tin GIF động duy nhất.

Những "công cụ khác" ấy có thể là Microsoft GIF Animator (thứ này cũng thuộc loại "đồ cổ"), WebMotion (của hãng Astound) hay GIF Construction Set (của hãng Alchemy Mindworks). Mấy thứ "đồ chơi" này không giúp ta vẽ diễn xuất tinh tế để làm phim hoạt hình một cách chuyên nghiệp như Animator Studio nhưng lại có những phương tiện để nhanh chóng tạo ra hình... nhúc nhích hay chớp nháy, đủ để bạn trang điểm cho giao diện người dùng, tạo nên bộ mặt "tươi tỉnh", vui nhộn, thân thiện hơn. Riêng WebMotion có một thư viện phong phú bao gồm rất nhiều sưu ảnh (clip-art) và con rối (sprite) để bạn dùng cho hoạt cảnh của mình. Chẳng hạn, chỉ cần chọn con rối và vạch đường đi, bạn có ngay một hoạt cảnh trong đó con rối "bay lả lướt" theo quỹ đạo đã định. Bạn có thể tìm thêm nhiều công cụ tạo GIF động khác tại địa chỉ http://members.aol.com/royalef/toolbox.htm.

[Đầu trang]

Công cụ thì có rất nhiều nhưng dĩ nhiên bạn sẽ chỉ chọn một vài thứ làm bửu bối cho mình. Ta hãy làm quen với GIF Construction Set (http://www.mindworkshop.com/alchemy/gifcon.html), một "bộ đồ nghề" tinh xảo và dễ dùng. Với GIF Construction Set, bạn không chỉ lưu kết quả dưới dạng GIF động mà còn có thể chuyển đổi thành dạng AVI để dùng cho PowerPoint.

Mon men vào địa chỉ mạng vừa nêu và "xin xỏ" bộ công cụ GIF Construction Set, ta sẽ nhận được tập tin gcsp20.exe. Khi chạy chương trình cài đặt này, bạn thấy xuất hiện một khung đối thoại yêu cầu cho biết số đăng ký. Bạn hãy bấm vào nút Evaluate để tỏ ý "dùng thử thôi mà" (làm gì dữ dzậy!). Thực ra, GIF Construction Set rất... dễ thương, diện mạo đơn giản. Chỉ cần "vọc" chừng một buổi, bạn sẽ biết hết các chức năng của nó.

Làm quen với GIF Construction Set

Thử mở tập tin ball.gif có sẵn, bạn thấy nội dung tập tin ấy phơi bày "trần trụi" trong một cửa sổ, gồm mười phần. Phần đầu là tiêu đề (header), lưu giữ thông tin tổng quát về cả tập tin. Từ phần Hai đến phần Chín là các khung hình liên tiếp. Phần Mười là chú giải (comment), giúp ta "chua" thêm câu chữ tùy ý, bày tỏ tình cảm... lăng nhăng chi đó. Chú giải là nội dung ẩn, không xuất hiện trên hình (các công cụ xem ảnh bình thường không biết đến phần này của tập tin GIF). Muốn tìm hiểu chi tiết phần nào của tập tin GIF, bạn bấm kép vào phần đó. Để xem GIF động biểu diễn, bạn bấm vào nút có hình "mắt kính đen".

Ta bày trò gì cho riêng mình đi, bạn nhé. Bạn hãy chọn mục LED Signs trên trình đơn Edit. Khung đối thoại LED Signs hiện ra giúp ta làm bảng chữ điện tử (để "chạy chữ" từ phải qua trái báo tin sốt dẻo nào đó). Chắc bạn đã biết, bảng chữ điện tử gồm nhiều đèn LED hợp lại. Chữ được tạo ra bởi một số đèn LED phát sáng.

Trong ô nhập liệu Sign text, bạn hãy gõ dòng chữ như sau:

@RLe trao tang @Gbieu tuong @YHiep si cong nghe thong tin

Với cách viết như vậy, cụm từ Le trao tang có màu đỏ, cụm từ bieu tuong có màu xanh và màu vàng được dùng cho phần còn lại - Hiep si cong nghe thong tin. Bạn có thể quy định màu khác đi, chẳng hạn, dùng @G để có màu xanh lá (green ), @B cho màu xanh dương (blue) và @W cho màu trắng (white).

Khung đối thoại LED Sign còn cho phép bạn quy định nhiều chi tiết liên quan đến "bảng điện tử":

Loop - Nếu bạn bật ô duyệt (check box) này, "bảng điện tử" của ta sẽ chạy chữ liên tục, không bao giờ ngừng.

Show Dark Pixels - Nếu muốn thấy cả những đèn LED không sáng (cho giống thực hơn), bạn bật ô duyệt này. Tuy nhiên sự phức tạp này sẽ làm tăng kích thước tập tin.

Smooth Scroll Columns per Frame - Nếu bật Smooth Scroll (chạy êm ru), trị số trong ô Columns per Frame (số cột xê dịch khi chuyển khung hình) sẽ có tác dụng. Dĩ nhiên, nếu chữ chạy càng êm, số khung hình cần thiết càng lớn.

Compact Sign - Nếu tắt ô duyệt này, bạn sẽ có dòng chữ lớn hơn, dễ đọc hơn và tập tin GIF thu được cũng lớn hơn.

Compress Palette - Để tập tin GIF thu được có chiều sâu màu nhỏ nhất (giảm kích thước tập tin), bạn bật ô duyệt này.

[Đầu trang]

Columns Wide - Ô này cho phép ta quy định số cột đèn LED trong "bảng điện tử". Số này lớn thì "bảng điện tử" sẽ rộng hơn.

Delay - Ô này quy định thời gian chờ trước khi chuyển khung hình. Đơn vị tính là phần trăm giây.

Trên khung đối thoại LED Sign, những lựa chọn mặc định đều nhằm mục đích tạo ra tập tin GIF cuối cùng nhỏ nhất có thể được. Nói chung, bạn nên chấp nhận những quy định đó và bấm OK ngay. Trong chớp mắt, bạn có được "bảng điện tử" như ý. Bạn thử ngay đi (cái trò này có thể đính vào thư gửi cho bạn bè, trông rất vui mắt!). Khi lưu "bảng điện tử" vừa thực hiện theo hướng dẫn trên, bạn thu được một tập tin GIF có kích thước 23 KB. Gọn nhẹ cực kỳ!

Kích thước tập tin GIF động

Kích thước tập tin GIF động là chuyện bạn phải luôn quan tâm. Nếu dùng cho trang web, kích thước tập tin GIF động chỉ nên dưới 50KB. Ưu thế của GIF động là ở những trò vui nho nhỏ. Trên trang web, bạn không nên kéo dài thời gian "diễn xuất" quá 5 giây.

Để giảm kích thước tập tin GIF đến mức tối thiểu, bạn chọn mục Supercompress trên trình đơn File. Khi ấy, ta có thể yêu cầu GIF Construction Set chỉ ghi nhận những thay đổi từ khung hình này qua khung hình khác thay vì lưu nguyên vẹn tất cả khung hình trong tập tin GIF. Supercompress còn rà soát lại số màu thực dùng để tạo ra chiều sâu bit nhỏ nhất có thể được, thay vì 8 bit như mặc định.

Về nguyên tắc, mỗi khung hình trong tập tin GIF có thể có bảng màu riêng. Nếu điều đó không thực sự cần thiết, không cải thiện đáng kể chất lượng màu sắc, bạn chỉ nên dùng một bảng màu duy nhất cho mọi khung hình để giảm kích thước tập tin GIF. Chẳng hạn, khi chèn thêm khung hình vào hoạt cảnh đang thực hiện bằng tập tin hình ảnh có sẵn nào đó bằng cách chọn Edit | Insert Block | Image, bạn thấy khung đối thoại Palette hiện ra, yêu cầu chọn phương án cho bảng màu. Nói chung, bảng màu của các hình ảnh GIF khác nhau nên khi dung nạp chúng vào một tập tin duy nhất, không thể không giải quyết "tranh chấp" giữa các bảng màu.

Khung đối thoại Palette bày ra ba phương án để bạn chọn:

Dither this image to the global palette - Buộc hình đang xét tuân theo bảng màu toàn cục duy nhất và dùng thuật giả màu (dithering) để tạo ra màu cần thiết nếu bảng màu ấy không đủ màu cho hình đang xét. Giả màu nghĩa là tạo ra những cấu trúc chấm màu thích hợp để ta có cảm giác về một màu khác. Phương án này làm cho hình trở nên lốm đốm, phức tạp hơn và tập tin GIF cuối cùng sẽ... phì ra đáng kể. Bạn đừng quên, GIF có độ nén tốt nhất khi hình ảnh chỉ có những mảng miếng, đường nét rõ ràng.

Remap this image to the global palette - Dùng bảng màu toàn cục và buộc màu sắc trên hình đang xét thay đổi một cách... mù quáng theo bảng màu ấy. Chẳng hạn, một điểm ảnh màu đỏ có thể bị chuyển thành xanh khi bị ép dùng bảng màu mới. Phương án này giúp giảm thiểu kích thước tập tin. Nếu hình ảnh không trở nên xấu đến mức khó chấp nhận thì đây là phương án nên chọn.

Use local palette for this image - Giữ nguyên "bản sắc" của hình được đưa vào, chấp nhận bảng màu riêng cho nó. Ngày nay, hầu hết màn hình máy tính có màu sắc thực nên chấp nhận mỗi khung hình có bảng màu riêng là chuyện bình thường thôi. Phương án này không làm bạn lo lắng vì chuyện đổi màu trên hình nhưng cái giá phải trả là tập tin GIF sẽ lớn lên. Nếu đó là "giá phải chăng" thì đây cũng là phương án tốt.

Dùng GIF động có nhiều thuận lợi nhưng để kích thước tập tin nhỏ nhất, bạn luôn phải cân nhắc vấn đề bảng màu, một chuyện gần như.... phi lý nếu bạn không từng đánh vật với sự hạn chế màu sắc trên những máy tính của một thời chưa xa. Dù sao, cái khó mà GIF đặt ra chính là điều kiện để bạn thi thố tài năng. Một tập tin GIF có hiệu quả thể hiện cao (vừa đẹp, vừa... thon) là bằng chứng rõ rệt nhất của tay nghề tạo hình "thời số hóa".

[Đầu trang]
Trang chủ
Thư ngỏ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Nhóm Frontpage
Cõi người ta
Kim cương doanh nghiệp
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Nuôi hồn Robot
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền VASC Orient, Công ty phát triển phần mềm VASC
99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn