Entwickler-Ecke
Dateizugriff - Eigenes ZIP-Programm schreiben?
GR-Thunderstorm - Sa 04.10.08 02:14
Titel: Eigenes ZIP-Programm schreiben?
Ich habe mir überlegt, einfach mal "zum Spaß" ein eigenes Programm zum Erstellen von ZIP-Archiven zu schreiben. Die Frage ist jetzt: Gibt es die ganzen benötigten Definitionen über die Komprimierung und was da alles dazugehört irgendwo kostenlos?
Ich würd das schon ganz gern selbst alles machen, ohne auf vorgefertigte Objekte und dergleichen zurückzugreifen.
Moderiert von
Narses: Topic aus Open Source Units verschoben am Sa 04.10.2008 um 18:13
Xentar - Sa 04.10.08 02:19
Wieso das Rad neu erfinden, wenn es schon fertige Komponenten gibt?
GR-Thunderstorm - Sa 04.10.08 02:20
Weil ich mir das Wissen aneignen möchte, um es später in andere Programmiersprachen zu überführen. ;)
Edit: Ich glaube, ich habe grade gefunden, was ich suche. :)
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
Jetzt muss ich das nur noch alles verstehen können. :shock:
Mindforce - Sa 04.10.08 04:05
Hi,
Du könntest einen Video-Packer schreiben.
Du übersetzt das Video in irgendeiner Weise zu Text und verwandelst z.B(!). alle "AB" zu "A", "AC" zu "B"; sodass statt 2 Zeichen nur eins kommt und statt 3 Zeichen nur 2, so war mal meine Methode. Somit sparst du dir sicherlich 1 oder 2 MB!
MfG,
M!ndbyte
alzaimar - Sa 04.10.08 08:18
Das/die ZIP-Verfahren sind schon zur genüge erklärt. Google mal nach LZW und LZSS. 'Adaptive Hufman Coding' (nicht einfaches Hufman, sondern unbedingt das 'adaptive') wird in RAR verwendet.
Greenberet - Sa 04.10.08 08:22
Es gibt mehrere verfahren, das hauptproblem ist, dass es fast für jedes Dateiformat eine unterschiedliche Möglichkeit zum Komprimieren gibt.
Bsp: Schwarz/Weiss Bild 100x10
Das Bild ist Zeilenweise abwechselnd schwarz und weiss -> einfach liniert
da würde folgender Code gehen ( Ist übrigens bei einem Fax nicht viel anders ;) )
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| 100xWeiss 100xSchwarz 100xWeiss 100xSchwarz 100xWeiss 100xSchwarz 100xWeiss 100xSchwarz 100xWeiss 100xSchwarz |
Hier fällt einem auf, dass sich das ganze immer wieder wiederholt.
dadurch können wir
als A bezeichnen und
als B
dadurch bekommen wir im endeffeckt
BBA
das BB können wir wieder durch C ersetzen
CA
und schon haben wir statt einem 100x10 pixel großen Bild genau 2 Buchstaben.
Das hier war nur ein simples Beispiel, vorallem bei Video&Audio wirst du beim Komprimieren auf einige Hindernisse stoßen.
alzaimar - Sa 04.10.08 08:31
Für Video und Audio gibt es die allseits beliebten Formate/Verfahren JPEG, PNG, MPEG, MP3 Ogg-Vorbis usw. usw.
alzaimar - Sa 04.10.08 08:33
Greenberet hat folgendes geschrieben : |
Es gibt mehrere verfahren, das hauptproblem ist, dass es fast für jedes Dateiformat eine unterschiedliche Möglichkeit zum Komprimieren gibt. |
Nö.
Greenberet hat folgendes geschrieben : |
und schon haben wir statt einem 100x10 pixel großen Bild genau 2 Buchstaben. |
Und wo steht die Information, was C und A bedeutet? Also, ein paar mehr Informationen sind das dann schon.
Mindforce - Sa 04.10.08 12:02
Zitat: |
Hier fällt einem auf, dass sich das ganze immer wieder wiederholt.
dadurch können wir
ausblenden anzeigen Quelltext
ausgeblendet markieren
1:
2:
10xWeiss
10xSchwarz
als A bezeichnen und
ausblenden anzeigen Quelltext
ausgeblendet markieren
1:
2xA
als B
dadurch bekommen wir im endeffeckt
BBA
das BB können wir wieder durch C ersetzen
CA ]
|
Genau so meinte ich das ;)
MfG,
M!ndbyte
GR-Thunderstorm - Sa 04.10.08 13:50
Uhm erstmal danke für die rege Beteiligung, aber ich wollte eigentlich schon wirklich mit Zip arbeiten. ^^ Also so, dass jeder meine Archive mit anderer xbeliebiger ZIP-Software öffnen kann.
Eigene Komprimierungen wollte ich nun eigentlich nicht erfinden, auch wenn ich mir schonmal Gedanken gemacht habe.
So könnte man Buchstaben zusammenfassen:
AL = L
EL = l
AX = X
EX = x
AR = R
ER = r
AM = M
EM = m
ALEX > AL + EX > Lx
WARUM > W + AR + UM > WRum
Das wort "Why" könnte man im ganzen einfach zu "y" machen, etc.
Am Ende würde sich irgendein krasser kryptischer Text ergeben, den man gegebenenfalls genauso wieder komprimieren könnte. Das waren nur ein paar Gedankenblitze, die ich mal hatte. Ich weiß, dass dadurch die Groß und Kleinschreibung vermutlich durcheinander gewirbelt wird.
Aber das sollte nicht das Thema dieses Threads sein. ;)
Ich habe die ganzen Spezifikationen mal kurz überflogen und so wie ich das verstanden habe, muss ich da letzten Endes die zu komprimierenden Dateien in 1en und 0en darstellen lassen, oder wie? :?
Ich glaube, um die ganzen Spezifikationen begrifflich überhaupt erstmal zu verstehen, müsste ich Informatik studieren. :?!?:
alzaimar - Sa 04.10.08 15:11
Du versuchst Dich ja auch an einem Stoff, der Dir algorithmisch und mathematisch (speziell BZIP) so Einiges abverlangt. Imho ist LZW am einfachsten zu verstehen und zu implementieren.
GR-Thunderstorm - Sa 04.10.08 17:21
LZW ist aber nur für Grafiken, oder?
Wenn ZIP wirklich so schwierig is, lass ich das wohl lieber bleiben. ^^
platzwart - Sa 04.10.08 17:31
zip-algorithmen ist nichts für anfänger, es sei denn, du bastelst dir was ganz einfaches, aber das willst du ja nicht. die heutzutage eingesetzten verfahren setzen einiges voraus.
wenn du dennoch daran interessiert bist, kannst du dich ja in die materie einarbeiten und vlt in ein paar monaten algorthmen entwerfen.
ich frage mich bloß immer warum hier so viele leute denken, man könne irgendwelche verfahren oder algorithmen mal eben so ohne kenntnisse implementieren. macht ja schon einen sinn, warum manche leute sowas studieren und damit ihr leben finanzieren ;)
GR-Thunderstorm - Sa 04.10.08 17:41
Ich hab mir das halt einfacher vorgestellt. ^^ Aber schon in den Spezifikationen schmeißen die nur so mit Fachbegriffen um sich, das wird dann wohl nix. :)
Allenfalls könnte ich einen Source Code von jemand anderes anschauen und dadurch versuchen zu verstehen, wies funktioniert.
Letzten Endes wollte ich das ganze eigentlich in CUDA überführen, nachdem ich die Grundzüge in Delphi verstanden hab. ;)
EDIT: Ich habe jetzt eine Erklärung auf Deutsch gefunden, die einigermaßen verständlich ist. :zustimm:
alzaimar - Sa 04.10.08 18:13
GR-Thunderstorm hat folgendes geschrieben : |
LZW ist aber nur für Grafiken, oder? |
Wie kommst du den darauf? LZW ist der klassische ZIP-Algorithmus, bis 'Deflate' (LZS77 oder irgendwie so) ins Spiel kam. LZW ist zwar im GIF-Format enthalten, das besagt aber nicht, das es nur für Grafiken geeignet wäre. Es ist einfach ein ziemlich guter und schneller allgemeingültiger verlustfreier Komprimierungsalgorithmus.
Sirke - Sa 04.10.08 20:33
Der Einstieg in Datenkompression ist mit Wikibooks recht einfach, da die bekanntesten Algos mit Pseudocodes und wirklich guten Beschreibungen versehen sind, sodass man ein Grundgerüst recht einfach aufbauen kann! Diese Primitive kann man anschließend kombinieren und recht akzeptable Ergebnisse erzielen.
http://de.wikibooks.org/wiki/Datenkompression
Was besseres als das bestehende wirst du wahrscheinlich nicht erreichen, aber darum geht es dir ja auch nicht, wenn ich das richtig verstanden habe ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!