4Bit PNG -> 4Bit BitMap

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

4Bit PNG -> 4Bit BitMap

Beitrag von DarkSoul »

Hallo,

ich habe ein Problem mit Bildern.

Und zwar, wenn ich ein PNG lade, das 4Bit ist und ich es mit dem untenstehenden Code nach BitMap mit gleicher Bittiefe convertiere. Diese Konvertierung ist normalerweise verlustfrei möglich. Allerdings wird die Farbpalette bei der Verwendung des untenstehenden PB-Codes verfälscht.

Code: Alles auswählen

LoadImage(0, file$) ;Beliebiges 4Bit-PNG
*img = EncodeImage(0, #PB_ImagePlugin_BMP, 0, 4) ;Das in *img gespeicherte Bild bekommt falsche Farben.
Wie muss ich das an dieser Stelle machen?
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: 4Bit PNG -> 4Bit BitMap

Beitrag von STARGÅTE »

In der Hilfe steht zu BitTiefe:
Die Tiefe, in welchem das Bild gespeichert werden soll. Gültige Werte sind 1, 4, 8, 24 und 32. Der Standard-Wert ist die originale Bild-Tiefe. Derzeit unterstützt nur der PNG-Encoder das "palettized" Bild-Format (1, 4 oder 8 Bit).
Du kannst also garnicht das #PB_ImagePlugin_BMP an dieser stelle nutzen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: 4Bit PNG -> 4Bit BitMap

Beitrag von DarkSoul »

Huch? Wurde das Feature rausgenommen?

Der Code hat nämlich in der Vergangenheit funktioniert. Das war aber noch PB 3.x. :mrgreen:

Das Lesen geht wenigstens noch.

Naaa klasse.....
:cry:

Edit: Das Problem besteht auch in entgegengesetzte Richtung. Das Bild wird in beiden Fällen korrekt geladen. Der Verlust passiert beim Speichern. :mrgreen:

Die PNG-Plugins sind natürlich drin.



Edit2: Hat sich für mich erledigt. Bin mittlerweile davon überzeugt, dass das mal wieder ein komischer PB-Bug ist. Habe mir die benötigten Image-Encoder anhand der Dateispezifikation nachgebaut und damit funktioniert es einwandfrei. Schwer war das nicht, nur warum bekommt PB das mal wieder nicht hin... Nur habe ich dabei ziemlich darüber geflucht, dass es anscheinend kein unsigned long gibt. Lieber ein eckiges Rad als gar keins. Dies ist wohl mein letztes PB-Projekt. Die aktuellen Versionen sind sehr minderwertig und buggy geworden, dass es mir inzwischen keinen Spaß mehr macht, irgendetwas damit anzustellen. Diese Programmiersprache war mal um einiges stabiler. Das ist übrigens dasselbe Projekt, das auch von den Konsolen-Farbproblemen und dem Skalierungsproblem aus den anderen Threads betroffen ist. Ein anderer Bug, den ich hier gar nicht erst gepostet habe, hat zwischendurch auch ziemlich genervt.
Bild
Antworten