Cách tạo và chỉnh sửa GIF động từ dòng lệnh trong Ubuntu
GIF động đã trở nên thực sự phổ biến trong vài năm qua và mức độ phổ biến của chúng ngày càng tăng với mỗi ngày trôi qua. Không đồng ý? Hãy nghĩ về điều này: hơn 23 triệu GIF được đăng lên Tumblr mỗi ngày. Vì vậy, rõ ràng có một khán giả cho định dạng hình ảnh này.
Điều đó có lôi kéo bạn tạo GIF không? Nếu có, bạn sẽ rất vui khi biết rằng có nhiều trình chỉnh sửa GIF dựa trên GUI hoạt động trên các nền tảng hệ điều hành khác nhau. Tuy nhiên, nếu bạn đang sử dụng Linux và đang tìm kiếm một công cụ dòng lệnh cho công việc này, chúng tôi sẽ thảo luận về Gifsicle - một công cụ cho phép bạn dễ dàng chơi với các GIF động.
Lưu ý : phiên bản 1.78 của Gifsicle đã được sử dụng cho tất cả các ví dụ được đề cập trong bài viết này.
Gifsicle
Gifsicle là công cụ dòng lệnh để tạo, chỉnh sửa và nhận thông tin về hình ảnh GIF và hoạt ảnh. Theo trang web chính thức của công cụ, Gifsicle cung cấp một số tính năng, bao gồm tối ưu hóa hình ảnh cũng như kiểm soát việc xen kẽ, nhận xét, lặp và minh bạch. Nó “ tạo ra các ảnh GIF tốt: loại bỏ các màu thừa, chỉ sử dụng các bảng màu cục bộ nếu nó hoàn toàn phải (không gian chất thải trong bảng màu cục bộ và có thể gây ra hiện vật xem), v.v. ”
Tải xuống và cài đặt
Trên Ubuntu (cũng như các hệ thống dựa trên Debian khác), bạn có thể dễ dàng tải xuống và cài đặt công cụ Gifsicle bằng cách sử dụng lệnh sau:
sudo apt-get cài đặt gifsicle
Hoặc bạn cũng có thể xây dựng nó từ đầu bằng cách sử dụng mã nguồn của nó hoặc sử dụng một nhị phân dựng sẵn - cả hai đều có sẵn để tải xuống từ trang web chính thức của công cụ.
Tạo GIF động bằng Gifsicle
Giả sử bạn có một loạt các tệp jpg và muốn tạo một tệp gif động từ chúng. Dưới đây là cách thực hiện:
Vì lệnh gifsicle
chỉ hoạt động trên các tệp gif, trước tiên bạn sẽ phải chuyển đổi tất cả các tệp .jpg thành định dạng .gif bằng cách sử dụng lệnh convert
:
chuyển đổi [tên tệp đầu vào] .jpg [tên tệp-đầu ra] .gif
Nếu số tệp jpg lớn, bạn có thể sử dụng lệnh sau để chuyển đổi tất cả chúng:
chuyển đổi '* .jpg [widht, ví dụ: 300x]' đã đổi kích thước% 03d.gif
Sau khi chuyển đổi từ jpg sang gif được thực hiện, lệnh chung để kết hợp các gif riêng lẻ thành một hình động cuối cùng như sau:
gifsicle [tốc độ hoạt ảnh] [số lần lặp] [input jpgs]> output.gif
Trong lệnh trên, bạn có thể đặt "tốc độ hoạt ảnh" bằng cờ --delay
, trong khi "số lần lặp" có thể được đặt bằng cờ --loopcount
.
Ví dụ, tôi có nhóm hình ảnh jpg sau đây.
Sau đây là lệnh mà tôi đã sử dụng để tạo ra một gif động từ các hình ảnh trên:
gifsicle --delay = 80 --loopcount = forever * .gif> out.gif
Và đây là out.gif.
Xin lưu ý rằng giá trị của --delay
thể hiện độ trễ giữa các khung trong một phần trăm giây. Ngoài ra, tôi đã sử dụng "mãi mãi" làm giá trị cho cờ --loopcount
. Điều này là để đảm bảo rằng hoạt ảnh không dừng lại. Bạn có thể sử dụng bất kỳ giá trị số nguyên nào nếu bạn muốn hoạt ảnh bị giới hạn ở số lượng đó.
Trích xuất khung riêng lẻ
Gifsicle cũng cho phép bạn dễ dàng trích xuất các khung hình riêng lẻ từ một gif động. Đây là một ví dụ về cách tôi đã làm nó:
gifsicle out.gif '# 0'> frame đầu tiên.gif
Lệnh trên đã trích xuất khung đầu tiên từ hoạt ảnh out.gif. Tôi chỉ tiếp tục thay đổi giá trị số nguyên sau "#" và tên tệp đầu ra và có thể trích xuất tất cả các khung từ out.gif.
Nếu số lượng khung hình trong gif động khá cao và bạn muốn trích xuất tất cả chúng, thì - khá dễ hiểu - sẽ không thực tế khi chạy lệnh trên một lần nữa và một lần nữa theo cách thủ công. Trong trường hợp đó, bạn có thể chạy lệnh trong một vòng lặp từ một kịch bản lệnh shell.
Một điều đáng nhắc đến ở đây là bạn cũng có thể sử dụng các giá trị âm với “#.” Các giá trị âm tham chiếu đến các khung hình từ cuối. Ví dụ: “# -1” sẽ mang lại cho bạn khung hình cuối cùng.
Chỉnh sửa GIF động
Với Gifsicle bạn cũng có thể dễ dàng chỉnh sửa GIF động. Ví dụ, lệnh sau tạo ra một "out.gif" mới mà không có gì ngoài "out.gif" cũ với khung đầu tiên của nó được thay thế bằng việc kết hợp "a.gif" và "b.gif":
gifsicle --delay = 80 --loopcount = forever -b out.gif --replace '# 0' a.gif b.gif
Tương tự, bạn có thể sử dụng cờ --delete
để xóa khung. Ví dụ, lệnh sau xóa khung đầu tiên của "out.gif" với gif kết quả là "out-new.gif":
gifsicle out.gif --xóa '# 0'> ngoài mới.gif
Không chỉ bạn có thể xóa và thay thế, nhưng bạn cũng có thể thêm khung mới vào GIF động. Ví dụ: --append
cho phép bạn thêm khung hình vào cuối của một gif động. Đây là một ví dụ:
gifsicle out-new.gif --gửi a.gif> out-new-appended.gif
Lệnh trên sẽ gắn khung “a.gif” vào “out-new.gif” hoạt hình và tạo ra "out-new-appended.gif" hoạt hình như đầu ra.
Bạn cũng có thể sử dụng --insert-before
để thêm một khung (hoặc nhiều khung) ở bất cứ nơi nào trong một gif động hiện có.
Chuyển đổi hình ảnh
Gifsicle cũng cung cấp một số tùy chọn chuyển đổi hình ảnh. Ví dụ, bạn có thể sử dụng công cụ để thay đổi kích thước hình ảnh gif. Bạn có thể sử dụng --resize [width]x[height]
để thay đổi kích thước hình ảnh gif của bạn thành chiều rộng và chiều cao cụ thể. Từ trang hướng dẫn của lệnh: “ Chiều rộng hoặc chiều cao có thể là dấu gạch dưới '_'. Nếu đối số là widthx_, thì GIF đầu ra được chia tỷ lệ thành chiều rộng pixel mà không thay đổi tỷ lệ cỡ ảnh. ”
Dưới đây là cách tôi thực hiện thao tác thay đổi kích thước trên “out.gif”:
gifsicle out.gif --resize 150x_> out-resize.gif
Lệnh trên đã tạo ra một tệp có tên “out-resize.gif”, không có gì ngoài một "out.gif" được thay đổi kích cỡ với chiều rộng 150px.
Phần kết luận
Gifsicle có thể không phải là một công cụ tạo / chỉnh sửa GIF rất phổ biến, nhưng nó chắc chắn là một công cụ rất hữu ích. Và hãy để tôi nói rõ rằng bất cứ điều gì chúng tôi đã thảo luận ở đây chỉ là một đỉnh của tảng băng trôi, vì công cụ cung cấp rất nhiều tính năng / tùy chọn. Tôi rất đáng để thử - hãy tìm hiểu thêm về nó ở đây.