Seite 1 von 1

Programm das JPEG öffnet

Verfasst: 8. März 2010 13:04
von Moritz
Hallo,

ich möchte mit Qt ein Programm schreiben welches JPEGs öffnen kann. Ich habe nun keine Ahnung was man da braucht. Ich google nun schon seit stunden danach und hoffe das mir jemand helfen kann. Ich bin bis jetzt nicht sehr weit gekommen. QImage kann ja JPEGs schreiben und lesen das wäre ja nicht schlecht vor allem weil ich sie auch später verändern will. also wenn ich mir eine Funktion schreibe

Code: Alles auswählen

void MyClass::loadImage()
{
     QImage image("C:\Daten\Bild.jpeg");
}
spuckt er schonmal keinen Fehler aus. wie komme ich jetzt an die daten ran. Ich wollte image.scanLine(0-255) (Bild ist 256*256 groß). Die Funktion erwartet einen const uchar*. wie bekomme ich die Bildinfos in ein array. Ich finde keine Beispiele. kann mir wer vielleicht mir Beispielcode oder anschaulichen erklärungen weiterhelfen? Ich hoffe auf eure erfahrung

lg
Moritz

Re: Programm das JPEG öffnet

Verfasst: 8. März 2010 13:28
von RavenIV
Moritz hat geschrieben: ... Ich wollte image.scanLine(0-255) (Bild ist 256*256 groß). Die Funktion erwartet einen const uchar*. wie bekomme ich die Bildinfos in ein array. ...

Code: Alles auswählen

const uchar * QImage::scanLine ( int i ) const
heisst nicht, dass ein const uchar * erwartet wird, sondern dass ein const uchar * zurückgegeben wird. Erwartet wird ein int i.

Da fehlen wohl ein paar C++-Grundlagen.

Ansonsten gibt es den Qt-Assistant oder die Qt-Webseite. Dort sind alle Funktionen von Qt beschrieben und es gibt auch viele Beispiele.

Was

Verfasst: 8. März 2010 16:15
von softwaremaker
Was willst du denn mit dem Bild machen?
Willst du es in einem Fenster anzeigen, dann platziere ein QLabel und rufe QLabel::setPixmap( QImage( bild.jpg ) ) auf.

Verfasst: 10. März 2010 14:32
von spatro
Also erstmal zum Laden:
Du musst entweder \\ oder / schreiben, ein einfacher \ funktioniert nicht.

Wenn das Bild geladen ist kannst du mit Image::pixel(inx, int y) auf die einzelnen Pixel zugreifen und erhältst jeweils eine QRgb Farbwert. Dann kannst du z.B. mit qBlue(QRgb) die einzlnen Farben auslesen.

Wahrscheinlich gibt es noch eine bessere Möglichkeit, aber so funktioniert es auf jeden Fall.