Image als PNG speichern
Verfasst: 16.06.2009 22:20
Hi @all!
Typische Anfängerfrage: "Warum erhalte ich beim Abspeichern eines Images als PNG (JPEG/BMP) nur ein schwarzes Bild?"
Hintergrundinfo: Ich versuche aus mehreren (vielen) kleineren PNGs ein großes zu erstellen.
Die Anzeige auf dem Bildschirm funktioniert, nur das gespeicherte Image ist schwarz bei ansonsten korrekten Abmessungen.
Der Code dazu ist so leider nicht lauffähig, da ja die Grafikdateien fehlen.
Vielleicht ist aber ja der Fehler den ich im Code habe so offensichtlich, daß er euch gleich ins Auge springt.
Ich würde mich über Hilfe freuen.
Typische Anfängerfrage: "Warum erhalte ich beim Abspeichern eines Images als PNG (JPEG/BMP) nur ein schwarzes Bild?"
Hintergrundinfo: Ich versuche aus mehreren (vielen) kleineren PNGs ein großes zu erstellen.
Die Anzeige auf dem Bildschirm funktioniert, nur das gespeicherte Image ist schwarz bei ansonsten korrekten Abmessungen.
Der Code dazu ist so leider nicht lauffähig, da ja die Grafikdateien fehlen.
Vielleicht ist aber ja der Fehler den ich im Code habe so offensichtlich, daß er euch gleich ins Auge springt.
Ich würde mich über Hilfe freuen.
Code: Alles auswählen
Enumeration
#MainWindow
#ChildWindow
EndEnumeration
Enumeration
#Image1
EndEnumeration
Enumeration
#Sprite
EndEnumeration
InFolder$="F:\Eigene Dateien\Historische Karten\Kartenteile\Test\"
OutFolder$="F:\Eigene Dateien\Historische Karten\Kartenteile\Test2\"
InitSprite()
UsePNGImageDecoder()
UsePNGImageEncoder()
OpenWindow(#Mainwindow,0,0,1240,1000,"Map")
AddKeyboardShortcut(#MainWindow,#PB_Shortcut_S,1); Taste 'S' zum speichern
OpenWindowedScreen(WindowID(#MainWindow),0,0,1000,1000,0,0,0)
CreateImage(#Image1, 5200, 3471,8)
CreateSprite(#Sprite,400,267,0)
; Die Grafikdateien liegen als PNG mit 8 Bit Tiefe und 400x300 Pixel vor
; Der Dateiname hat die Form XxxYyy.png
; Auf das Image werden die Teilgrafiken in x-Richtung nebeneinander und
; in y-Richtung überlappend gezeichnet.
y=0
Repeat
x=0
Repeat
Datei$="X"+RSet(Str(x),2,"0")+"Y"+RSet(Str(y),2,"0")+".png"; XxxYyy.png
LoadSprite(#Sprite,InFolder$+Datei$)
StartDrawing(ImageOutput(#Image1))
DisplaySprite(#Sprite,x*400,y*267)
StopDrawing()
FlipBuffers()
x+1
Until x=3; 3 zum Testen, ansonsten 13
y+1
Until y=3; 3 zum Testen, ansonsten 15
; Bis hier ist alles so wie es sein soll
Repeat
event=WaitWindowEvent()
If event=#PB_Event_Menu
If EventMenu()=1; Taste S
SaveImage(#Image1, Outfolder$+"LinksOben.png",#PB_ImagePlugin_PNG); Erzeugt nur ein "schwarzes Loch" als Grafik
EndIf
EndIf
Until event = #PB_Event_CloseWindow