Hallo,
Die erste einfache Optimierung wäre beispielsweise eine run-length-Codierung für gleichfarbige Pixel - das würde für Zeichnungen schon sehr helfen.
Was in HTML mit rowspan und colspan umsetzbar ist. Deshab sehe ich auch eher eine Umsetzung von GIF als eine von JPEG bei der Sache.
Ich habe momentan als 'einziges' Format BMP mit 24 Bit. Das ist zwar nicht sonderlich kompatibel, wird aber nur für den Konvertiervorgang verwendet.
Der Ablauf ist folgender GIF/JPEP/PNG/sonstwas nehmen, mit einem Malprogramm verkleinern, Farben reduzieren, etc.
Dann mit dem Tool, momentan leider noch ein DOS-Programm mit kryprischer Aufrufsyntax, als HTML konvertieren.
Dabei werden gleiche Farbflächen bereits mit ROWSPAN und COLSPAN zusammengefaßt.
Je länger ich mir das durch den Kopf gehen lasse, desto spannender fände ich es, so einen intelligenten Komprimierer zu schreiben.
Meine Analogie ist übrigens nicht das zeilenorientiert denkende GIF, sondern dann gleich das flächenorientiert denkende PNG, denn ROWSPAN und COLSPAN kann man ja kombiniert einsetzen.
Momentan mache ich das Zusammenfassen mit einem Greedy-Algorithmus. Der ist auf keinen Fall optimal, aber dafür von der Laufzeit her polynomiell.
Eine integrale Optimierung wäre in der Tat np-vollständig, aber man kann ja ruhig mal 30 Sekunden oder so für die Komprimierung warten.
Die Optimierung muß dann so ablaufen, daß die größte Fläche gesucht wird, gemerkt und markiert. Das dann iterieren bis kein Pixel mehr übrig ist.
Dann ist es aber wirklich optimal :) Müßte man auch beweisen können.
Ciao,
Mathias