Hallo,
Habe ein PNG welches keine Transparent Color beinhaltet.
Die Background Farbe ist RGB(255,255,255). Das Farbe möchte ich gerne als Transparent-Color definieren und dann das PNG wieder abspeichern. Habt Ihr eine Idee wie ich das mit PureBasic anstellen kann?
Transparent-Color eines PNG verstellen bzw einstellen.
Transparent-Color eines PNG verstellen bzw einstellen.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Re: Transparent-Color eines PNG verstellen bzw einstellen.
Als Datei öffnen und Chunk hinzufügen.
Hier findest du die nötigen Infos übers Dateiformat: http://www.libpng.org/pub/png/
Hier findest du die nötigen Infos übers Dateiformat: http://www.libpng.org/pub/png/
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Transparent-Color eines PNG verstellen bzw einstellen.
Code: Alles auswählen
EnableExplicit
UsePNGImageDecoder()
UsePNGImageEncoder()
Procedure CustomCallback(x, y, QuellFarbe, ZielFarbe)
If QuellFarbe = RGBA(255, 255, 255, 255)
ProcedureReturn RGBA(255, 255, 255, 0)
Else
ProcedureReturn QuellFarbe
EndIf
EndProcedure
Define.s File
File = OpenFileRequester("", "", "", 0)
If File
If LoadImage(0, File)
If CreateImage(1, ImageWidth(0), ImageHeight(0), 32)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@CustomCallback())
DrawAlphaImage(ImageID(0), 0, 0)
StopDrawing()
File = SaveFileRequester("", "", "", 0)
If File
SaveImage(1, File, #PB_ImagePlugin_PNG)
EndIf
EndIf
EndIf
EndIf
Hier noch ein kleines Beispiel. Hab den Hintergrund des Fensters auf Blau gesetzt, damit man es besser
erkennt

Code: Alles auswählen
EnableExplicit
Define.s File = GetTemporaryDirectory() + "Ok.png"
InitNetwork()
UsePNGImageDecoder()
Procedure CustomCallback(x, y, QuellFarbe, ZielFarbe)
If QuellFarbe = RGBA(255, 255, 255, 255)
ProcedureReturn RGBA(255, 255, 255, 0)
Else
ProcedureReturn QuellFarbe
EndIf
EndProcedure
If FileSize(File) <= 0
ReceiveHTTPFile("https://dl.dropbox.com/u/3086026/Ok.png", File)
EndIf
If LoadImage(0, File)
If CreateImage(1, ImageWidth(0), ImageHeight(0), 32)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@CustomCallback())
DrawAlphaImage(ImageID(0), 0, 0)
StopDrawing()
EndIf
OpenWindow(0, #PB_Ignore, #PB_Ignore, 330, 170, "Transparent Test")
SetWindowColor(0, $FF0000)
ImageGadget(0, 10, 10, 150, 150, ImageID(0))
ImageGadget(1, 170, 10, 150, 150, ImageID(1))
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Transparent-Color eines PNG verstellen bzw einstellen.
@ts-soft,
Dafür ein dickes Bussi. Hast Dir das echt verdient
Dafür ein dickes Bussi. Hast Dir das echt verdient

Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Transparent-Color eines PNG verstellen bzw einstellen.
Solange Dir Perlweiß reicht, ist es ja gut. Ansonsten würde ich STARGÅTE mal anhauen, der
hat bestimmt auch eine Formel parat um schmutziges Weiß, also die kleinen häßlichen Ränder
zu berechnen.
hat bestimmt auch eine Formel parat um schmutziges Weiß, also die kleinen häßlichen Ränder
zu berechnen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Transparent-Color eines PNG verstellen bzw einstellen.
Wobei Alphakanal und transparente Farbe streng genommen nicht das gleiche ist.
PNG unterstützt das definieren von Farben als Transparent ohne Alphakanal.
PNG unterstützt das definieren von Farben als Transparent ohne Alphakanal.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
