Ja, das gute alte GIF. GIF wird wegen seiner Vielseitigkeit geliebt, wegen seiner Patente gehasst und aufgrund seiner Einschränkungen (und Patente) teilweise überholt. Es besteht im Kern aus einer Farbpalette und einem palettenindexierten Bild, das mit dem LZW-Algorithmus komprimiert wurde.
Ihre Aufgabe besteht darin, ein Programm zu schreiben, das ein Bild im ASCII- PPM- Format (magische Zahl "P3") von der Standardeingabe liest und dasselbe Bild (Pixel für Pixel identisch) im GIF-Format in die Standardausgabe schreibt. Die Ausgabe kann entweder in binärer Form oder als ASCII-Text erfolgen, wobei jedes Byte durch eine durch Leerzeichen getrennte Zahl zwischen 0 und 255 (einschließlich) dargestellt wird.
Das Eingabebild hat garantiert nicht mehr als 256 verschiedene Farben.
Wertung:
Ihr Programm wird an 3 Beispielbildern getestet und Ihre Punktzahl wird wie folgt berechnet:
Programmgröße + Summe (Ausgabegröße - Referenzgröße für jedes Beispielbild) Die
niedrigste Punktzahl gewinnt.
Bedarf:
- Ihr Programm muss mit ähnlichen Arten von Bildern unterschiedlicher Größe arbeiten und darf nicht auf die Beispielbilder beschränkt sein. Sie können beispielsweise die Abmessungen auf ein Vielfaches von 2 beschränken oder davon ausgehen, dass die maximale ppm-Farbe 255 beträgt, dies sollte jedoch mit einer Vielzahl von Eingabebildern funktionieren.
- Die Ausgabe muss eine gültige GIF-Datei sein, die mit jedem kompatiblen Programm geladen werden kann (nach der Konvertierung in eine Binärdatei, wenn die ASCII-Ausgabeoption verwendet wird).
- Sie können keine Bildverarbeitungsfunktionen (integriert oder von Drittanbietern) verwenden. Ihr Programm muss den gesamten relevanten Code enthalten.
- Ihr Programm muss unter Linux mit frei verfügbarer Software ausgeführt werden können.
- Der Quellcode darf nur ASCII-Zeichen verwenden.
Beispielbilder:
Hier sind die 3 Beispielbilder, die für die Bewertung verwendet werden. Sie können ein Zip-Archiv mit den ppm-Dateien herunterladen (verwenden Sie den Download-Button oben auf dieser Seite). Oder Sie können sie mit ImageMagick mit dem folgenden Befehl aus den folgenden PNG-Bildern konvertieren:
convert file.png -compress none file.ppm
Ich stelle auch die MD5-Prüfsummen der ppm-Dateien zur Bestätigung zur Verfügung.
1. Bernstein
Referenzgröße: 38055
MD5-Prüfsumme von ppm: d1ad863cb556869332074717eb278080
2. Blueeyes
Referenzgröße: 28638
MD5-Prüfsumme von ppm: e9ad410057a5f6c25a22a534259dcf3a
3. Paprika
Referenzgröße: 53586
MD5-Prüfsumme von ppm: 74112dbdbb8b7de5216f9e24c2e1a627