[gelöst]QImage File

Alles rund um die Programmierung mit Qt
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

[gelöst]QImage File

Beitrag von DevilsDaughter »

ich würde gern ein schon bestehendes QImage in ein File umwandeln,
hab schon in mehrern versionen versucht, nichts klappt!

Wie stell ich, dass am geschicktesten an?

Danke!!
Zuletzt geändert von DevilsDaughter am 7. April 2006 10:16, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

This can, for example, be used to save an image directly into a QByteArray:

QImage image;
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG"); // writes image into ba in PNG format
Das tut nicht?
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Re

Beitrag von DevilsDaughter »

da kommen immer foglende fehlermeldungen:

error: invalid conversion from `QByteArray*' to `int'

error: initializing argument 1 of `QMemArray<type>::QMemArray(int) [with type = char]'

error: `WriteOnly' is not a member of type `QIODevice'

weiters muss ich das file auch benennen!!!

muss die funktion einer anderen library ersetzen, code hat vorher so ausgesehen:

Code: Alles auswählen

    if (printDRR) {
	fp = AVW_CreateImageFile("SplattedDRR.avw","AnalyzeAVW",256,256,1,AVW_UNSIGNED_CHAR);
	AVW_WriteImageFile(fp,interMedImage);
	AVW_CloseImageFile(fp);
    }
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Vielleicht postest du mal was du bisher hast.
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Beitrag von DevilsDaughter »

das hatte ich bisher ...aber das funktioniert absolut nicht:


Code: Alles auswählen

   
interMedImage = new QImage (256,256,8,256,QImage::IgnoreEndian);
  if (printDRR) {
	  QImageIO iio;
	  QImage interMedImage;
	  iio.setImage( interMedImage);
	  io.setFileName( "SplattedDRR.bmp");
	  iio.setFormat( "BMP" );
	  if ( iio.write() )
    }
	    
   QImage* interMedImage = qsplatdrrDRR;            
/soll interMedImag in qsplatdrrDRR kopieren, iqsplatdrr DRR st auch ein QImage   
    delete interMedImage; 
    interMedImage = NULL;
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Schreib das doch nächstes Mal dabei, das du dich auf Qt3 beziehst. Dann bekommst Du auch keine Beispiele, die nicht funktionieren können.

Dein Stück Code scheint aus der Doku entnommen zu sein. Allerdings hast Du eine wichtige Zeile entfernt, nämlich die, in der dem QImage auch ein Bild zugewiesen wird.
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Re

Beitrag von DevilsDaughter »

sorry, dass ich vergessen habe das dazu zuschreiben......
:roll:

habs jetzt so probiert:

Code: Alles auswählen

      if (printDRR) {
	  QImageIO iio;
	  QImage fp;
	  fp = QImage interMedImage ;
	  iio.setImage( fp);
	  iio.setFileName( "SplattedDRR.bmp");
	  iio.setFormat( "BMP" );
	  if ( iio.write() )
    }
aber das funktioniert noch immer nicht, irgendwie steh ich anscheind auf der leitung.....
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was wollt ihr machen?
QImage::save()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Beitrag von DevilsDaughter »

ich möchte ein imagefile von interMedImage erzeugen...

es öffnen...schreiben und dann wieder schließen.....

ps:verwende qt3
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das hab ich auch schon gesagt, aber damit ein Image gesichert wird, muß erstmal eins da sein und das sehe ich nirgends.
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Beitrag von DevilsDaughter »

Code: Alles auswählen

interMedImage = new QImage (256,256,8,256,QImage::IgnoreEndian); 
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

DevilsDaughter hat geschrieben:ich möchte ein imagefile von interMedImage erzeugen...

es öffnen...schreiben und dann wieder schließen.....

ps:verwende qt3
Da dies ein Imageformat ist, welches nicht von Qt untestützt wird, musst Du wohl eine eigenes Imageplugin schreiben... Dann kannst du später auch QImage.load("myimage.imi") bzw. QImage.save("myimage.imi","IMI");
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

DevilsDaughter hat geschrieben:

Code: Alles auswählen

interMedImage = new QImage (256,256,8,256,QImage::IgnoreEndian); 
Ja genau, und 3 Zeilen weiter? Womit läßt sich denn sowas compilieren? Eigentlich hätte da doch der Compiler schon meckern müssen.
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

re

Beitrag von DevilsDaughter »

ja sicher meckert er...deswegen hab ich ja auch gefragt, wie das funktioniert...wenn ichs wüßte....würd ich auch nicht fragen....
DevilsDaughter
Beiträge: 27
Registriert: 21. März 2006 10:01

Beitrag von DevilsDaughter »

@ Christian81

und wie genau muss ich dass machen????
wieso wird das format nicht von qt unterstützt, ist ja nur ein ganz normales qimage???
bin schon leicht verzweifelt......
Antworten