Seite 1 von 1

QImage

Verfasst: 19. April 2006 10:36
von DevilsDaughter
Hi,
wie kann ich ein farbiges Image in ein graues umwandeln?
Geht das in etwa so???

Code: Alles auswählen

if (theScaledImage -> numColors ()) {    
for(uint i = 0; i < 256; ++i)
theScaledImage -> setColor(i, qRgb(i,i,i));                
}
muss eine funktion: MakeAllGray() ersetzen:

converts a color image to a gray scale image
Conversion is done using the following formula:
out_color = red * .30 + green * .59 + blue * .11;


Danke,

Lg Devil's Daughter

Verfasst: 19. April 2006 15:51
von Goos
Jo zum Teil geht das so in der Art und die Konvertierung nach 8-bit dann halt ueber die out_color = red * .30 + green * .59 + blue * .11; Formel wuerd ich mal sagen.

Goos

Re:

Verfasst: 20. April 2006 10:20
von DevilsDaughter
Und wie würde das genau aussehen...mit der 8bit konvertierung??

Danke!!

Verfasst: 20. April 2006 10:27
von Goos
Na so wie du beschrieben hast.
out_color = red * .30 + green * .59 + blue * .11;
und das dann wohl fuer jedes Pixel.
So reduzierst die 24-bit Farben dann auf 8-bit Grauwerte, also aus 3 mach eins :D

Ist in meinen Augen die einzige Moeglichkeit um die von dir in der Formel genannten Faktoren umzusetzen.
(Falls das so nicht gehen sollte, oder zu langsam ist (hoert sich naemlich schon irgendwie nach Performancefresser an ....muss man sich halt nochmal Gedanken machen)

Goos

Re:

Verfasst: 20. April 2006 10:34
von Christian81
DevilsDaughter hat geschrieben:Und wie würde das genau aussehen...mit der 8bit konvertierung??
http://doc.trolltech.com/4.1/qimage.htm ... rtToFormat
Und dann deine eigene Graukonvertierung durchführen wie du oben beschrieben hast. Nur das ich nicht '<256' sondern '< numColors()' nehmen würde...

Re:

Verfasst: 20. April 2006 10:52
von DevilsDaughter
also irgendwie steh ich auf der leitung....

kann mir dass ganze nicht wirklich vorstellen....
habs jetzt schon probiert...aber das funktioniert irgendwie nicht...

Verfasst: 20. April 2006 11:02
von Goos
Was hast denn probiert?
Meine Kristallkugel wills mir nicht so recht zeigen ;)

Goos

Verfasst: 20. April 2006 11:05
von Christian81
Muss man euch alles vorkauen? ;)

Code: Alles auswählen

QImage im, im2;
if (!im.load("wieauchimmer.jpg"))
  return false;
im2 = im.convertToFormat(QImage::Format_Indexed8);
if(im2.isNull())
  return false;
for(int i = 0; i < im2.numColors(); i++) {
  QRgb rgb = im2.color(i);
  int gray = qRed(rgb) * .30 + qGreen(rgb) * .59 + qBlue(rgb) * .11;
  im2.setColor(i,qRgb(gray,gray,gray));
}

Re:

Verfasst: 20. April 2006 11:06
von DevilsDaughter
Danke sehr nett!


*gg* ja mir zumindest manchmal schon :roll:

Verfasst: 21. April 2006 00:12
von lepsai
DevilsDaughter - geiler Nick.... :)