Seite 1 von 1
bild umfärben
Verfasst: 17.03.2011 00:47
von delikanli_19_82
hallo leute,
mal eine frage, dies mal nur unter windows. wäre auch für eine universelle lösung dankbar.
ich brauche eine möglichkeit, womit ich ein png oder jpeg bild, das ich in das programm hineinlade umfärben kann. das heißt, dessen farben manipulieren kann.
schließlich wird das bild als eine neue datei abgespeichert.
mfg
kurt
Re: bild umfärben
Verfasst: 17.03.2011 01:46
von STARGÅTE
Einfach das Bild als Image laden,
alle Pixel abfahren, auslesen, manipulieren und schreiben.
Code: Alles auswählen
For y = 0 To Height-1
For x = 0 to Width-1
Color = Point(x,y)
Color = Manipulation(Color)
Plot(x,y, Color)
Next
Next
Manipulation() ist dann irgendeine Procedure, welche die Farbe ändert ...
Re: bild umfärben
Verfasst: 17.03.2011 12:58
von rolaf
STARGÅTE hat geschrieben:Einfach das Bild als Image laden,
alle Pixel abfahren, auslesen, manipulieren und schreiben.
Code: Alles auswählen
For y = 0 To Height-1
For x = 0 to Width-1
Color = Point(x,y)
Color = Manipulation(Color)
Plot(x,y, Color)
Next
Next
Manipulation() ist dann irgendeine Procedure, welche die Farbe ändert ...
Wobei Point() und Plot() jeweils ein eigenes StartDrawing() + StopDrawing() benötigen. Es braucht also noch ein Array zum Zwischenspeichern der Farbdaten.
Re: bild umfärben
Verfasst: 17.03.2011 14:09
von CSHW89
DrFalo hat geschrieben:STARGÅTE hat geschrieben:Einfach das Bild als Image laden,
alle Pixel abfahren, auslesen, manipulieren und schreiben.
Code: Alles auswählen
For y = 0 To Height-1
For x = 0 to Width-1
Color = Point(x,y)
Color = Manipulation(Color)
Plot(x,y, Color)
Next
Next
Manipulation() ist dann irgendeine Procedure, welche die Farbe ändert ...
Wobei Point() und Plot() jeweils ein eigenes StartDrawing() + StopDrawing() benötigen. Es braucht also noch ein Array zum Zwischenspeichern der Farbdaten.
Hm??? Geht doch beides in einem:
Code: Alles auswählen
LoadImage(1, ---=== hier Name einfügen ===---)
If StartDrawing(ImageOutput(1))
Width = ImageWidth (1)
Height = ImageHeight(1)
For y = 0 To Height-1
For x = 0 to Width-1
Color = Point(x,y)
Color = Manipulation(Color)
Plot(x,y, Color)
Next
Next
StopDrawing()
EndIf
SaveImage(1, ---=== hier Name einfügen ===---)
Re: bild umfärben
Verfasst: 17.03.2011 14:29
von rolaf
CSHW89 hat geschrieben:Hm??? Geht doch beides in einem:
Code: Alles auswählen
LoadImage(1, ---=== hier Name einfügen ===---)
If StartDrawing(ImageOutput(1))
Width = ImageWidth (1)
Height = ImageHeight(1)
For y = 0 To Height-1
For x = 0 to Width-1
Color = Point(x,y)
Color = Manipulation(Color)
Plot(x,y, Color)
Next
Next
StopDrawing()
EndIf
SaveImage(1, ---=== hier Name einfügen ===---)
Theorie <> Praxis

Probier es real aus und ändere auch tatsächlich die Farben, dann siehst du es...
Re: bild umfärben
Verfasst: 17.03.2011 14:53
von STARGÅTE
Eigentlich gibt es ja noch ein etwas anderen Weg:
Code: Alles auswählen
Enumeration
#SourceImage
#DestinationImage
EndEnumeration
InitNetwork()
UsePNGImageDecoder()
ReceiveHTTPFile("http://data.unionbytes.de/UnionBytesIcon.png", GetTemporaryDirectory()+"UnionBytesIcon.png")
LoadImage(#SourceImage, GetTemporaryDirectory()+"UnionBytesIcon.png")
CreateImage(#DestinationImage, ImageWidth(#SourceImage), ImageHeight(#SourceImage), 32|#PB_Image_Transparent)
Debug "Downloaded"
Procedure ColorRotation(x, y, Color, Color2)
ProcedureReturn RGBA(Green(Color), Blue(Color), Red(Color), Alpha(Color))
EndProcedure
Time = ElapsedMilliseconds()
StartDrawing(ImageOutput(#DestinationImage))
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@ColorRotation())
DrawImage(ImageID(#SourceImage), 0, 0)
StopDrawing()
Debug "Drawing"
Title$ = "Beispiel in "+Str(ElapsedMilliseconds()-Time)+"ms"
OpenWindow(#PB_Any, 0, 0, ImageWidth(#SourceImage)*2, ImageHeight(#SourceImage), Title$, #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#PB_Any, 0, 0, 0, 0, ImageID(#SourceImage))
ImageGadget(#PB_Any, ImageWidth(#SourceImage), 0, 0, 0, ImageID(#DestinationImage))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Also CustomFilterCallback()
Ich habe n Zeitmessung mit eingebaut, damit ihr nicht denkt das der CustomFilterCallback so lange braucht, sonden der Download^^
Auf jedenfall ist das ein einfaches Beispiel einer Farbrotation in unserem Union Bytes Logo ^^
Re: bild umfärben
Verfasst: 18.03.2011 18:15
von delikanli_19_82
hallo leute,
danke für die beispiele. ich werde mich damit auseinander setzen.
viele dank.
mfg
kurt