Tôi có một thuật toán cho các tour du lịch của hiệp sĩ trên bàn cờ với các kích cỡ khác nhau (kích thước lớn, như 100x100) và tôi muốn tạo hiệu ứng cho kết quả. Mỗi khi hiệp sĩ di chuyển đến một hình vuông mới, một pixel tương ứng trong canvas vuông sẽ thay đổi màu sắc, cho đến khi toàn bộ canvas được tô màu. Phim kết quả sẽ có sẵn để xem trên trang web về thuật toán.Cách tốt nhất để tạo GIF động bằng thuật toán là gì?
GIF động có vẻ như là phương pháp tốt nhất nếu tôi muốn hỗ trợ trình duyệt rộng (mặc dù các đề xuất khác được hoan nghênh). Công cụ hay thư viện nào tốt nhất để làm điều này? Tôi rất vui khi sử dụng bất kỳ thứ gì có sẵn miễn phí trên máy tính Linux hoặc Mac.
Thuật toán thực tế là quá dài để làm một ví dụ hữu ích ở đây (xem this paper nếu bạn thực sự tò mò) nhưng đây là mã giả cho tour du lịch một (nhàm chán) vua trên một bảng 8x8:
movie = new Movie()
frame = new Frame()
frame.fillRectangle((1,1), 8, 8, BLUE)
for row in [1..8] {
if (row.isOdd()) { colrange = [1..8] } else { colrange = [8..1] }
for col in colrange {
frame.colourPixel(row, col, RED)
movie.addFrame(frame)
}
}
movie.saveAsGIF("tour.gif")
Câu hỏi thêm về tín dụng: chúng ta có thể tận dụng các tính năng đặc biệt của phim này để giảm kích thước tệp không? Các Wikipedia article cho thấy rằng chúng tôi có thể có thể làm điều này, nếu chúng tôi chỉ thay đổi một số các điểm ảnh - trong thực tế, chúng tôi chỉ thay đổi một cho mỗi khung!
Không sử dụng hình động. Chuyển đổi nó sang định dạng phim thay vào đó, quá trình nén sẽ cao hơn nhiều –
Bạn định dạng định dạng nào và công cụ nào để tạo nó? –
Mức độ nén phụ thuộc vào rất nhiều thứ. Đối với hình ảnh đơn giản gifs sẽ làm tốt. Bên cạnh đó, kích thước có thể không quan tâm nhiều đến sự đơn giản. Gifs động không phải là công nghệ tuyệt vời, nhưng chúng được hỗ trợ tốt. – Naaff