Bild in Grau-Tönen
Übersicht

Dirk KnoopBetreff: Bild in Grau-Tönen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
weiss jemand, wie ein farbiges Bild in Grautönen umgerechnet werden kann, so wie es auf einem Schwarz-Weiss-Fernseher aussehen würde ? Das farbige Bild soll geladen werden und sofort in s/w dargestellt werden. Gruß, Dirk Knoop |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
-die farbwerte einscannen
-durchschnitt der farbwerte ermitteln -pixel wieder mit dem errechnetten wert einzeichnen also wenn du einen pixel mit color 200,100,30 hast, dann rechnest du x = (200+100+30)/3 = 330/3 = 110 und zeichnest einen pixel mit color x,x,x also color 110,110,110 ! |
||
MrKeks.net |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beim großen Tut von Rob ist was dabei ...
www.robsite.de |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
ChrisAttack |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum funktioniert das nicht?
Code: [AUSKLAPPEN] Graphics 800,600,32,1 ;render an image in black and white Function RenderImageBW(m_image=0) image = CopyImage(m_image) w = ImageWidth(image) h = ImageHeight(image) SetBuffer ImageBuffer(image) LockBuffer ImageBuffer(image) For s_w = 0 To w For s_h = 0 To h rgb=ReadPixelFast(s_w,s_h) a=(rgb And $FF000000)/$1000000 r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF f_color = (r+g+b)/3 f_rgb=a*$1000000 + r*$10000 + g*$100 + b WritePixelFast s_w,s_h,f_rgb Next Next UnlockBuffer ImageBuffer(image) Return image End Function bild = LoadImage("bild.JPG") neu = RenderImageBW(bild) SetBuffer BackBuffer() Repeat DrawImage neu,0,0 Flip Until KeyHit(1) |
||
B3D
MSVC++ DX9SDK |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] For s_w = 0 To w - 1 ; <-----
For s_h = 0 To h - 1 ; <----- rgb=ReadPixelFast(s_w,s_h) a=(rgb And $FF000000)/$1000000 r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF f_color = (r+g+b)/3 f_rgb=f_color*$10000 + f_color*$100 + f_color ; <--- f_color, nicht r,g,b WritePixelFast s_w,s_h,f_rgb Next Next |
||
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wandle es doch vorher in s/w um. Graphikprogramme wie Paint Shop Pro und Irfanview haben eine entsprechende Funktion. | ||
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Diese Funktion wandelt ein Bild in Graustufen um. Die Ausgangsdatei wird dabei überschrieben.
Code: [AUSKLAPPEN] Function ConvertSW(File$) Bild = LoadImage(File$) LockBuffer ImageBuffer(Bild) For y = 0 To ImageHeight(Bild) For x = 0 To ImageWidth(Bild) rgb = ReadPixelFast(x,y,ImageBuffer(Bild)) a=(rgb And $FF000000)/$1000000 r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF rgb=a*$1000000 + b*$10000 + b*$100 + b WritePixelFast(x,y,rgb,ImageBuffer(Bild)) Next Next UnlockBuffer ImageBuffer(Bild) SaveBuffer(ImageBuffer(Bild),File$) ; Ausgangsdatei überschreiben End Function |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
... und wenn das Bild z.B. nur aus Rot - Abstufungen besteht, ists hinterher schwarz. Ausserdem brauchst du r und g gar nicht berechnen. | ||
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/viewtopic.php?p=45827 | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bitte keinen Durchschnitt aus (r+g+b)/3 berechnen! Das menschliche Auge sieht die Farben unterschiedlich stark - so ist grün am hellsten, dann folgt rot und dann blau. Die Farben müssen darum unterschiedlich gewichtet werden. | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was TS meint:
RGB -> HSV -> Sättigung von HSV auf 0 -> RGB mfg olli |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
nö
eher sowas: Y = 0,299*R + 0,587*G + 0,114*B Nachzulesen unter http://www.ralphaltmann.de/bil...09_048.pdf "Liminanz" oder ganz unten http://vb-tec.de/rgb.htm |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Edlothiol
Da wäre ich jetzt nicht drauf gekommen, danke für den Tipp. ![]() @TheShadow Man kann's auch zu genau nehmen oder. Ich hab's jetzt mal direkt verglichen. ![]() Es gibt einen kleinen Unterschied zwischen dem Mittelwert und deiner Formel, aber das fällt doch kaum auf. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
probier mal das Bild hier:
http://www.sasbachwalden.de/we...schaft.jpg am besten noch verkleinern vorher... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
ChrisAttack |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie kann man farben verstärken??? | ||
B3D
MSVC++ DX9SDK |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich denke mal wenn man RGB->HSB konvertiert und sättigung angebt oder runtersenkt und dann wieder nach RGB konvertiert... Nur leider kann HSB weniger Farben speichern 360x100x100=3.600.000 vs. 16,7 Mio bei RGB | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
EDIT:
Farbotn(Bild, Rot, Grün, Blau) - Hier muss jeweils ein Faktor angegeben werden, mit dem der jeweilige Farbwert multipliziert wird. Code: [AUSKLAPPEN] Graphics 800,600,16,2 Bild = LoadImage("Landschaft.jpg") Start = MilliSecs() Farbton(Bild, 1.2, .5, 1.2) AppTitle MilliSecs()-Start + "ms" DrawImage Bild,0,0 WaitKey Function Farbton(Bild,fr#,fg#,fb#) LockBuffer ImageBuffer(Bild) For y = 0 To ImageHeight(Bild) For x = 0 To ImageWidth(Bild) rgb = ReadPixelFast(x,y,ImageBuffer(Bild)) a=(rgb And $FF000000)/$1000000 r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF r = r * fr If r > 255 Then r = 255 If r < 0 Then r = 0 g = g * fg If g > 255 Then g = 255 If g < 0 Then g = 0 b = b * fb If b > 255 Then b = 255 If b < 0 Then b = 0 rgb=a*$1000000 + r*$10000 + g*$100 + b WritePixelFast(x,y,rgb,ImageBuffer(Bild)) Next Next UnlockBuffer ImageBuffer(Bild) End Function |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
vielen Dank für eure Antworten. Der Code von ChrisAttack klappt bei mir sehr gut. Bei dem vom Travis wird bei mir leider nichts angezeigt. Ich benötige diese Effekte für ein neues Programm. Damit lassen sich Bilder einladen und mit coolen Rahmen versehen, um diese dann beispielsweise als Email versenden zu können. Das ganze ist für normale User gedacht, die nicht mit Grafikprogrammen arbeiten. Außerdem möchte ich noch ein paar Grafik-Effekte einbauen, wie beispielsweise ein Bild in Grautönen färben. Was müste ich bei dem Code von ChrisAttack beispielsweise ändern, damit ein Bild in Gold-, Rot, Gelb- oder Grüntönen verwandelt wird ? Auf jeden Fall schon einmal Danke für Eure Hilfe. Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das geht alles mit der Farbtonfunktion, die ich oben gepostet habe. Ich habe mich gestern mal wieder rangesetzt und ein paar einfache Bildeffekte zusammengestellt.
Wenn es jemanden interessiert, kann er es sich ja mal ansehen. Es sind ein paar Bilder enthalten und zu jedem Effekt ein Anwendungsbeispiel. Die einzelnen Effekte sind in Funktionen eingeteilt. Im Angebot sind: Graustufen - Wandelt das Bild in Graustufen um Helligkeit - Ändert die Helligkeit Mosaik - Ein Mosaikeffekt Farbton - Intensität von Farbtönen ändern Invertieren - Invertiert das Bild Streuen - Verstreut die einzelnen Bildpunkte Ihr müsst die Datei Samples.bb öffnen!! http://home.t-online.de/home/D...ffekte.rar Hier noch ein Beispiel was dabei herauskommt, wenn man einzelne Effekte kombiniert. Das ist eine Kombination aus Graustufenumwandlung, Farbton- und Helligkeitsänderung. Sieht jetzt so aus wie ein "Altes Foto". ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Travis,
ich habe es eben ausprobiert. Sieht echt super aus ! Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group