Autor Beitrag
GR-Thunderstorm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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 user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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. :shock:
Mindforce
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 358

Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: 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 ;) )
ausblenden 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
ausblenden Quelltext
1:
2:
10xWeiss
10xSchwarz

als A bezeichnen und

ausblenden Quelltext
1:
2xA					

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 04.10.08 08:33 
user profile iconGreenberet hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt mehrere verfahren, das hauptproblem ist, dass es fast für jedes Dateiformat eine unterschiedliche Möglichkeit zum Komprimieren gibt.
Nö.

user profile iconGreenberet hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
Na denn, dann. Bis dann, denn.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Sa 04.10.08 11:24 
@GR-Thunderstorm
Vielleicht findest Du auch über SharpZipLib passende Informationen. Jürgen
Mindforce
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 358

Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 04.10.08 18:13 
user profile iconGR-Thunderstorm hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: Sa 04.10.08 18:37 
user profile iconalzaimar hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGR-Thunderstorm hat folgendes geschrieben Zum zitierten Posting springen:
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.


Ja sry, ich hatte Wikipedia zunächst falsch gedeutet. :oops:
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 206



BeitragVerfasst: 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. :)