Vâng, GIF cũ tốt. Được yêu thích vì tính linh hoạt của nó, ghét các bằng sáng chế và một phần bị lỗi thời do những hạn chế (và bằng sáng chế), GIF bao gồm, ở lõi, của một bảng màu và một hình ảnh được lập chỉ mục bảng màu được nén bằng thuật toán LZW.
Nhiệm vụ của bạn là viết một chương trình đọc một hình ảnh ở định dạng ASCII PPM (số ma thuật "P3") từ đầu vào tiêu chuẩn và ghi cùng một hình ảnh (pixel-by-pixel) theo định dạng GIF vào đầu ra tiêu chuẩn. Đầu ra có thể ở dạng nhị phân hoặc văn bản ASCII với mỗi byte được biểu thị bằng một số từ 0 đến 255 (đã bao gồm), được phân tách bằng khoảng trắng.
Hình ảnh đầu vào được đảm bảo không có quá 256 màu khác nhau.
Ghi điểm:
Chương trình của bạn sẽ được kiểm tra trên 3 hình ảnh mẫu và điểm của bạn sẽ được tính như sau:
kích thước chương trình + tổng (kích thước đầu ra - kích thước tham chiếu cho mỗi hình ảnh mẫu)
Điểm thấp nhất sẽ thắng.
Yêu cầu:
- Chương trình của bạn phải hoạt động với mọi loại hình ảnh tương tự có kích cỡ khác nhau và không giới hạn ở hình ảnh mẫu. Ví dụ, bạn có thể giới hạn kích thước là bội số của 2 hoặc giả sử rằng màu tối đa ppm là 255, nhưng nó vẫn hoạt động với nhiều hình ảnh đầu vào.
- Đầu ra phải là một tệp GIF hợp lệ có thể được tải với bất kỳ chương trình tuân thủ nào (sau khi chuyển đổi trở lại thành nhị phân nếu sử dụng tùy chọn đầu ra ASCII).
- Bạn không thể sử dụng bất kỳ chức năng xử lý hình ảnh nào (tích hợp hoặc bên thứ ba), chương trình của bạn phải chứa tất cả các mã có liên quan.
- Chương trình của bạn phải được chạy trong Linux bằng phần mềm có sẵn miễn phí.
- Mã nguồn chỉ được sử dụng các ký tự ASCII.
Hình ảnh mẫu:
Dưới đây là 3 hình ảnh mẫu sẽ được sử dụng để chấm điểm. Bạn có thể tải xuống một kho lưu trữ zip với các tệp ppm (sử dụng nút tải xuống ở đầu trang đó). Hoặc bạn có thể chuyển đổi chúng từ các hình ảnh png bên dưới, sử dụng ImageMagick với lệnh sau:
convert file.png -compress none file.ppm
Tôi cũng đang cung cấp tổng kiểm MD5 của các tệp ppm để xác nhận.
1. hổ phách
Kích thước tham chiếu:
tổng kiểm tra 38055 MD5 của ppm: d1ad863cb556869332074717eb278080
2. blueeyes
Kích thước tham chiếu: 28638
MD5 tổng kiểm tra ppm: e9ad410057a5f6c25a22a534259dcf3a
3. ớt
Kích thước tham chiếu: 53586
MD5 tổng kiểm tra ppm: 74112dbdbb8b7de5216f9e24c2e1a627