eigenes bildformat /erledigt
Übersicht

judosBetreff: eigenes bildformat /erledigt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo zusammen,
ich habe mal angefangen ein eigenes bildformat zu schreiben, allerdings habe ich jetzt ein problem: das neue format ist ungefähr 10mal grösser als das jgp bild. die funktion sieht so aus: Code: [AUSKLAPPEN] Function save_mat(image,name$) file=WriteFile(name$) WriteShort file,ImageWidth(image) WriteShort file,ImageHeight(image) LockBuffer ImageBuffer(image) For i=0 To ImageHeight(image)-1 For j=0 To ImageHeight(image)-1 rgb=ReadPixelFast(i,j,ImageBuffer(image)) r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF WriteByte file,r WriteByte file,g WriteByte file,b Next Next UnlockBuffer ImageBuffer(image) CloseFile file End Function es werden pro plot drei bytes geschrieben. wie kann man das noch weiter verkleinern ??? mfg judos |
||
- Zuletzt bearbeitet von judos am Sa, Jun 03, 2006 12:46, insgesamt einmal bearbeitet
![]() |
Der Wanderer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Normalerweise benutzt man verlustfreie (.gif, .png, .pcx) oder verlustbehaftete (.jpg) Komprimierungsalgorithmen, um Bilder einzudampfen. Das was du machst, ist das Bild einfach unkomprimiert raus zu dumpen, und das auch noch relativ ineffizient (einzelne Bytes schreiben). Das ist ungefähr so wie Microsofts .bmp Format.
Das ist eigentlich kein "eigenes" Bildformat, sondern ein Raw Data dump. |
||
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok wie geht so ein komprimierung logarythmus? kannst du das mal ein bisschen genauer beschreiben? würde mich sehr interessieren...
![]() mfg judos |
||
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
dein bildformat könntest du bytemap (.bmp dateien = BITmap) nennen... ich hab auch mal sowas versucht, bin aber auch in der bildgrösse gescheitert... | ||
www.xairro.com |
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
judos hat Folgendes geschrieben: ok wie geht so ein komprimierung logarythmus? kannst du das mal ein bisschen genauer beschreiben? würde mich sehr interessieren...
![]() mfg judos Es gibt verschiedene Algorithmen für die Komprimierung, welche den Thread hier sicherlich sprengen würden. Aber wie heisst es doch immer so schön: Google ist Dein Freund! |
||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Al90's BB-Cruncher kann dir da helfen. Den gibt es auch in einer Non-GUI Version, die man in seinen Code einfach einbinden kann. So habe ich die Skins für XUI gepackt.
cheers |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau, das wollte ich vorhin auch schreiben, aber dann bin ich Kaffee kochen gegangen. Und jetzt wo ich wieder komm, hat D-Bug schon den Typ zum BB-Cruncher gegeben. Nimm den, der ist total cool. | ||
![]() |
Der Wanderer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, wenn du nicht mal einen Algorithmus von einem Logarithmus unterscheiden kannst, und das auch noch falsch schreibst, solltest du dich vielleicht erstmal an was anderem versuchen als gleich ein eigenes Grafikformat entwicklen zu wollen, sowas wie "gib mir die ersten 100 Fibonacci Zahlen aus" oder "Türme von Hanoi" lösen.
Für was brauchst du das denn ? Geht es nur darum dass andere die Grafiken nicht editieren sollen ? Aber ich will auch konstruktiv sein: - spare dir den Aufwand, die Daten einfach nur zu packen mit einer fertigen Funktion. Die einsparung wird wesentlich weniger als bei JPEG sein, und auf der Platte hat man heutzutage genug Platz, und für die Internetveröffentlichung zipst du es ja sowieso, das ist genauso gut als wenn du die Dateien einzeln manuell packst, evtl. sogar besser. - für Verlustfreies packen macht man es so: Man versucht das Bild erstmal für den Packer vorzubereiten, indem man versucht Pixel vorherzusagen (Predictor). Dann speichert man nur den Fehler zwischen dem vorhergesagten Wert und dem tatsächlichen. Dadurch bekommst du nicht lauter Werte zwischen 0-255, sondern in sehr vielen Fällen kleine Zahlen (die sog. Deltas). Auf diese Deltas lässt du dann einen Packer los, wie BB Cruncher oder sonstwas (zlib ist ganz gut), was dann besser packt. Beim entpacken geht es dann umgekehrt: Mit dem Packer entpacken, und aus den Deltas wieder die eigentlichen Pixel berechnen. Man sagt wieder die Pixel vorher, und addiert das Delta dazu. Verlustbehaftetes Packen ist etwas komplizierter (daszu bracht man die Fourier Transformation), aber vermutlich nicht das was du willst. |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
odre man nspeichert alle farben die es gibt und weißt denen werte zu. damm kann man auf die bilder mit diesen werten beschreiben....nur 0 und 1 reserviert man, die bedeuten siehe links und siehe oben....das geh allerdings nur wenn man sie von links oben nach rechts unten wieder "zusammenbaut" | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Der Wanderer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das wäre dann farbenindiziert, etwa wie bei GIF.
Das geht aber nur für Bilder mit wenigen Farben, z.B. Zeichnungen mit grossen einfarbigen Flächen, bei Fotos oder Farbverläufen gibt es Qualitätsverlust. Welches Format am besten isthängt natürlich auch stark von dem Bild selbst ab. Fotos (wnn es nicht so genau sein muss) JPEG bei bester Qualität 24 bit PNG wenn man wenig Farben hat auch farbenindiziertes GIF/PNG. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group