Aktuelle Zeit: 13.12.2017 07:17

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: pixel überschreiben
BeitragVerfasst: 07.12.2017 18:38 
Offline

Registriert: 14.12.2015 15:16
hi leute,

gibt es eine möglichkeit in pb, crossplattform, innerhalb einer image-zeichnung, zum beispiel einer offenen jpeg, einzelne pixel oder bereiche transparent zu machen? also die alpha-werte der pixel in der betroffenen stelle zu verändern, ohne die farben oder das gesamte bild ändern zu müssen?

quais sowas:
Code:
If img
  If StartDrawing(ImageOutput(img))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    tempcolor = Point(mousex,mousey)
    maketransparent(tempcolor)
    Plot(mousex,mousey,tempcolor)
    StopDrawing()
  EndIf
EndIf


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: pixel überschreiben
BeitragVerfasst: 07.12.2017 19:50 
Offline
Benutzeravatar

Registriert: 21.08.2006 17:39
Hi,

wenns dir nur um den Farbwert geht, schmeiß den Alphawert doch einfach selbst raus.
Wie weit die Image-Lib Transparenz selbst unterstützt, mag ich gerade nicht testen :D .
Code:
color = RGBA(20,100,200,200)

color_new = color - Alpha(color)*Pow(16,6)

Debug Hex(color)
Debug Hex(color_new)

Debug Alpha(color_new)

;---- oder

color_new = rgba(red(color),green(color),blue(color),0)



MFG
MIB

_________________
(hab alles, kann alles, weiß alles!!^^)

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: pixel überschreiben
BeitragVerfasst: 07.12.2017 20:04 
Offline

Registriert: 14.12.2015 15:16
das ist mir schon klar. das problem ist nur, wenn ich den neu errechneten farbwert mittels plot an dieselbe stelle zeichne, scheint es nicht zu klappen. beispiel:

Code:
; Originalfarbe aus der Position n auslesen. Dieser ist undurchsichtig. Also Alpha=255
color = Point(x,y)
; Zwischenfunktion, der wandelt jetzt den Alpha-Wert auf 0. Ohne probleme einfach zu machen.
color = removeAlpha(color)
; So jetzt wollen wir die neue Farbe (mit voller Transparenz) an dieselbe Stelle zeichnen
Plot(x,y,color)


Fazit: Der darunterliegende Wert (also das Originalwert) wird einfach beibehalten. Genau den will ich jedoch überschreiben. Also auch den Alpha-Wert des Pixels eben ändern.

Es geht also nicht darum, die Farbe an sich zu ändern, sondern nur den Alpha-Kanal des Farbpunktes.

Und genau das will nicht funktionieren. ich habe zwar eine aufwendige lösung erstellt, die sauber funktioniert. dieser ist aber bei größeren bildern, und bei bedarf von größeren fläschen, die transparent werden sollen, zu langsam. ich habe zwar an api sachen gedacht, brauche aber eine lösung die auf win,lin und mac läuft.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: pixel überschreiben
BeitragVerfasst: 07.12.2017 20:39 
Offline
Benutzeravatar

Registriert: 21.08.2006 17:39
Hi,

dann doch PB anschmeißen.^^

Code:
UsePNGImageEncoder()

CreateImage(0,200,200,32,255)   ;32!

StartDrawing(ImageOutput(0))

  DrawingMode(#PB_2DDrawing_AlphaChannel)   ;wäre genau dein Modus!

  Debug Hex(Point(50,50))

  For x = 0 To 20
    Plot(50+x,50+x,RGBA(0,0,0,0))
  Next

  Debug Hex(Point(50,50))

StopDrawing()

SaveImage(0,"xxx\bild.png",#PB_ImagePlugin_PNG)   ;PFAD! - wenn, dann natürlich ein Format, das Transparenz unterstützt!


MFG
MIB

_________________
(hab alles, kann alles, weiß alles!!^^)

Bild


Zuletzt geändert von man-in-black am 07.12.2017 21:28, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: pixel überschreiben
BeitragVerfasst: 07.12.2017 21:00 
Offline

Registriert: 14.12.2015 15:16
cool! thanks


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye