Autor |
Beitrag |
GR-Thunderstorm
      
Beiträge: 206
|
Verfasst: Sa 04.10.08 02:14
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
Zuletzt bearbeitet von GR-Thunderstorm am Sa 04.10.08 02:19, insgesamt 1-mal bearbeitet
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 04.10.08 02:19
Wieso das Rad neu erfinden, wenn es schon fertige Komponenten gibt?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
GR-Thunderstorm 
      
Beiträge: 206
|
Verfasst: 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.
www.pkware.com/docum...estudies/APPNOTE.TXT
Jetzt muss ich das nur noch alles verstehen können. 
|
|
Mindforce
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: 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
_________________ Our force; in mind.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: 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
Quelltext
als A bezeichnen und
Quelltext
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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Sa 04.10.08 08:33
_________________ Na denn, dann. Bis dann, denn.
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Sa 04.10.08 11:24
@GR-Thunderstorm
Vielleicht findest Du auch über SharpZipLib passende Informationen. Jürgen
|
|
Mindforce
      
Beiträge: 358
Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
|
Verfasst: 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
_________________ Our force; in mind.
|
|
GR-Thunderstorm 
      
Beiträge: 206
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
GR-Thunderstorm 
      
Beiträge: 206
|
Verfasst: 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
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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 
      
Beiträge: 206
|
Verfasst: 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. 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
GR-Thunderstorm 
      
Beiträge: 206
|
Verfasst: Sa 04.10.08 18:37
|
|
Sirke
      
Beiträge: 208
Erhaltene Danke: 2
|
Verfasst: 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.
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 
|
|
GR-Thunderstorm 
      
Beiträge: 206
|
Verfasst: Sa 04.10.08 21:37
Ich habe mir grade in dieser Quelle freenet-homepage.de/.../zipview/zipview.htm den Code für nen einfachen Viewer angesehen und dabei kommen mir so einige kleine Fragen auf.
Was genau ist "ZipDirEntry" und "ZipEndRecord"?
Ich kann dafür keine Deklaration finden.
Edit: Habs gefunden. 
|
|