Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 21.10.2007, 10:38 Titel: lib zum farben hoch-/runterschrauben |
|
|
Hi, ich brauche bitte eine Lib, mit der man mit möglichst wenig Farbverlusten mit FB im 32bit-Modus erstellte BMPs in 8bit-BMPs umwandeln kann und umgekehrt. Wichtig ist dabei, dass beim konvertieren die Farbe mit Index 0 die selbe bleibt! Kann mir da wer was empfehlen?
mfG Cherry |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 21.10.2007, 11:12 Titel: |
|
|
Selbermachen?
Ist jetzt nicht sooooooo schwer
Ansonsten dürfte FreeImage sowas bieten.
Schau einfach mal in der FreeImage.bi nach einer Funktion, die einen vielversprechenden Namen hat  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2007, 13:06 Titel: |
|
|
Aus dem Problem ist jetzt nicht ersichtlich, ob es unbedingt in FB geschehen muss (also letztendlich in der Anwendersoftware) oder ob du einfach nur die Bilder konvertieren willst (Als Entwickler). Für letzteres kann ich dir PhotoFiltre empfehlen, das kann ziemlich gut Paletten Konvertieren Ansonsten sollte es nicht allzu schwer sien, so etwas selbst zu bauen... Farben zählen, falls es zu viel Farben sind, ähnliche Farben zu einer zusammenfassen und schon hast du eine Palette  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 21.10.2007, 19:08 Titel: |
|
|
Hm, es soll in FB geschehen. Und das mit dem Zusammenfassen und so - da blick ich echt nicht durch. FreeImage - da bin auch grad eben drauf gestossen. Gibts da n tut für? Und wegen dem Index 0 - ich muss mich korrigieren - nachher sollen alle Bildpunkte, die vorher Farbe #FF00FF hatten, die Farbe mit dem Index 0 haben. Und umgekehrt sollen alle Bildpunkte, die vorher Index 0 hatten, beim Farben HOCHschrauben die Farbe #FF00FF haben. Kann mir da wer helfen?
mfG Cherry |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2007, 19:25 Titel: |
|
|
du musst jeden einzelnen bildpunkt des bildes durchgehen und schauen, ob die farbe an diesem punkt schonmal vorkam (am besten ein array anlegen). dieses array darf dann nicht mehr als 256 einträge haben. wenn's doch mehr sind, müssen ähnliche farben (z.B. zwei weißtöne) zu einer zusammengefasst werden... auf diese weiße kannst du auch schnell das pink durch schwarz ersetzen... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 21.10.2007, 19:25 Titel: |
|
|
Cherry hat Folgendes geschrieben: | Hm, es soll in FB geschehen. Und das mit dem Zusammenfassen und so - da blick ich echt nicht durch. FreeImage - da bin auch grad eben drauf gestossen. Gibts da n tut für? Und wegen dem Index 0 - ich muss mich korrigieren - nachher sollen alle Bildpunkte, die vorher Farbe #FF00FF hatten, die Farbe mit dem Index 0 haben. Und umgekehrt sollen alle Bildpunkte, die vorher Index 0 hatten, beim Farben HOCHschrauben die Farbe #FF00FF haben. Kann mir da wer helfen?
mfG Cherry |
1) Klar gibts für FI ein Tutorial: sogar für FB!
2) folgende Funktionen wären da für dich interessant:
Code: | FreeImage_ConvertTo8Bits()
FreeImage_ConvertTo32Bits() |
Beide Funktionen erwarten einen Pointer auf ein FI Bild (kein FB Bild), und liefern auch einen zurück, bei der ersten auf ein 8 Bit (256 Farben) FI Bild, bei der zweiten auf ein 32 Bit FI Bild. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 21.10.2007, 22:15 Titel: |
|
|
äh, ich möchte vor allem deswegen eine Lib benutzen, weil der Vorgang bestenfalls 20 mal in der Sekunde stattfinden soll. Größe des Bildes ist 320x240. Und bei FreeImage verstehe ich nicht, wie ich mein pink<>Index 0 Problem löse...
aber danke für den tut Link
mfG Cherry |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2007, 22:23 Titel: |
|
|
Cherry hat Folgendes geschrieben: | 20 mal in der Sekunde |
meine güte, was hast du denn vor? wenn das in echtzeit gehen soll, würde ich lieber gleich 32bit nehmen... es kommt mir so sinnlos vor... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 21.10.2007, 22:36 Titel: |
|
|
Vlt will er einen Softwareraytracer mit Cel-Shading bestücken  |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 22.10.2007, 22:08 Titel: |
|
|
nein, das Programm, dem das Bild "untergeschoben" werden soll, kann nur mit 8bit...
mfG Cherry |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 23.10.2007, 16:28 Titel: |
|
|
Hi,
mit ImageConvertRow lässt sich in FB ein Image von 32Bit auf 8Bit bringen.
Ob Index 0 dann &hff00ff entspricht glaub ich nicht?
Ein 256 Farben Bild lässt sich aber nicht wieder in ein true-color Bild wandeln, du kannst es dann im 32Bit Format anzeigen ABER es bleibt dann ein Bild mit 256 Farben  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 23.10.2007, 18:11 Titel: |
|
|
Das Herunterrechnen der Farbenzahl stellt ein Stück weit eine Kunst für sich dar. Zu Deiner Anforderung mit dem Index 0: Macht so betrachtet überhaupt nicht viel Sinn: Entweder willst Du in einen Grafikmodus mit nur 256 Farben gehen, dann müssen sämtliche Bilder eine gemeinsame Farbpalette besitzen (=Index 0 bis und mit 255 sind "vorgeschrieben"!) oder Du nutzst es nur zur Speicherkompression, weil die Videokarte schlussendlich wieder mit TrueColor arbeitet (z.B. GIF-Bilder in Webbrowser darstellen), dann kann jedes Bild seine eigene Farbpalette besitzen.
In meinem Kartenlegespiel hatte ich den ersteren Fall (SCREEN 13 in QB) und alles musste auf dieselbe Farbpalette umgerechnet werden. Siehe sonst auch
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/BilderVerwenden.html _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 23.10.2007, 19:19 Titel: |
|
|
vlt definiert er zB Palette Entry 0 als Transparent oder so... is ja bei Put sicher genauso möglich... |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.10.2007, 20:14 Titel: |
|
|
PMedia hat Folgendes geschrieben: | vlt definiert er zB Palette Entry 0 als Transparent oder so... is ja bei Put sicher genauso möglich... |
Als Transparenz dient in (fast) allen 8 Bit-Bibliothken nicht die Farbe schwarz, sondern der Index 0... Wäre also egal, wie Farbe 0 aussieht... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 26.10.2007, 08:26 Titel: |
|
|
also nochmal: ich habe ein Programm, das nur 8bit Grafiken annimmt. Ich will aber intern mit FreeBasic mit 32bit arbeiten, da ich mehrere Grafiken zu einer zusammenfassen will und so und MultiPut benutzen will. Also muss ich 8bit Dateien laden, unter 32bit in FreeBasic verarbeiten und dann wieder als 8bit speichern. Und zwar mit möglichst wenig Farbverlusten. Die Transparenz muss dabei die ganze Zeit die gleiche sein.
mfG Cherry |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 28.10.2007, 14:47 Titel: |
|
|
äh, ja, aber wie speichere ich mit FreeImage ein Bild aus einem FB-Bildpuffer?
Wie ich lade, steht ja im tut, aber wie speichere ich? |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 29.10.2007, 14:39 Titel: |
|
|
Gar nicht?
Als BMP mit BSave speichern, evtl. noch mit FI konvertieren.
Oder sich die im Tutorial angesprochene Funktion anschauen, und nachvollziehen, was sie macht.
Dann drehst du den Vorgang um.
Leider hat mein Vater sich mein Laptop geborgt, sodass ich keinen Compiler und auch keine IDE da habe, um es zu testen. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 29.10.2007, 14:55 Titel: |
|
|
ich will aber den Fb Bildpuffer in einen Fi Bildpuffer stopfen. Ich habs eh schon probiert, aber ich krieg immer nur Segment Violations ohne Ende... |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.10.2007, 16:18 Titel: |
|
|
Dann zeig uns halt deinen Code, damit wir sehen, dass du es versucht hast - und viel wichtiger: Ihn korigieren können. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|