22.09.2012, 20:52
PowerPacker Algos schwirren als freie Software im Netz herum (insb. im Zusammenhang mit Amiga-Software). Das sollte kein großes Problem sein.
(22.09.2012, 20:39)Hendrik schrieb: [ -> ]Insbesondere fehlt uns ein PowerPacker-Algorithmusder Powerpack algorithmus wurde doch schon von HenneNWH in c++ und von mir in c# umgesetzt
(22.09.2012, 20:52)Rabenaas schrieb: [ -> ]PowerPacker Algos schwirren als freie Software im Netz herum (insb. im Zusammenhang mit Amiga-Software). Das sollte kein großes Problem sein.
(22.09.2012, 21:07)tommy schrieb: [ -> ](22.09.2012, 20:39)Hendrik schrieb: [ -> ]Insbesondere fehlt uns ein PowerPacker-Algorithmusder Powerpack algorithmus wurde doch schon von HenneNWH in c++ und von mir in c# umgesetzt
(22.09.2012, 21:15)Hendrik schrieb: [ -> ]Für Entpacker stimmt das. Ich hatte irgendwann einmal nach einem guten Pack-Algorithmus gesucht und (außer massenweise Entpackern) nichts brauchbares gefunden.ak ans packen habe ich garnicht gedacht
(22.09.2012, 21:15)Hendrik schrieb: [ -> ]Gut, man kommt sicher auch ohne PP-Bilder aus, dann werden eben alle mit RLE codiert. Wenn man es richtig implementiert, kann man mit PP aber einiges an Platz sparen (sicher, heutzutage eher eine Frage der Eleganz als der Notwendigkeit).man muss hier auch unterscheiden, das Powerpack einmal in der NVF datei genutzt wird (entsprechendes Crunchmode bit ist gesetzt) und dann gibt es ja noch Bilder die sind komplett mit powerpack gepackt. Letztere müssen natürlich auch wieder verpackt werden.
(23.09.2012, 08:35)Rabenaas schrieb: [ -> ]Wie schwierig ist es wohl, aus dem Entpackalgorithmus wieder einen Packalgorithmus zu machen?glaub mir, das ist nicht so einfach wie du dir das vorstellst...zumindest wenn du es wirklich effizient machen willst, aber mal ehrlich, die Bilder sind wirklich winzig, so dass man die nicht effizient verpacken muss.
# PowerPack schreibt das Bild rückwärts
for i in image.size downto 0 do
# Suche in den bisher geschriebenen Daten das längste Muster,
# das mit den aktuell zu schreibenden Bilddaten identisch ist
longest_pattern_index = longest_pattern_size = 0
for j in image.size downto i do
k=0
# Suche Muster an Position j
while image[i-k] == image[j-k] do
k+=1
end
# Vergleiche mit längstem bereits gefundenen Muster
if (k > longest_pattern_size) then
longest_pattern_index = j
longest_pattern_size = k
end
end
# Ist das Muster zu kurz, um damit Bits zu sparen?
if (longest_pattern_size < 3)
# Dann füge das nächste Pixel ein
pp_add_pixel(image[i])
else
# Schreibe alle einzeln eingefügten Pixel (siehe oben) auf einmal
pp_flush_pixels()
# Schreibe eine Referenz auf das längste gefundene Muster in die Datei.
pp_write_pattern(longest_pattern_index, longest_pattern_size)
end
end
# Schreibe alle einzelnen Pixel, die noch übriggeblieben sind, in die Datei.
pp_flush_pixels()
(23.09.2012, 11:38)Rabenaas schrieb: [ -> ]Du meinst also, PP benutzt eine Variante von Lempel-Ziv?