Seite 1 von 1

QImage::Indexed8 bringt "index out of range"-Fehle

Verfasst: 29. November 2006 21:07
von nevis
Hallo zusammen,
ich sitze jetzt schon zwei Tage an einem Fehler, den ich nicht verstehe :roll:
Also ich habe ein Programm, das mir über 4 Slider den Bildbereich einer Kamera( Monochrom) einschränkt. Sobald ein Slider seine Wert ändert wird eine Routine aufgerufen, die das alte QImage löscht und ein neues mit der neuen Breite und Höhe anlegt. Das Problem ist hierbei, dass wenn ich ein QImage::Format_Indexed8 verwende, mir beim ersten verändern des Bildbereiches das Programm abschmiert
<changeImageSize>
ASSERT failure in QVector<T>::at: "index out of range", file C:/dev/Qt/include/QtCore/../../src/corelib/tools/qvector.h, line 282
Verwende ich jedoch ::Format_RGB32 läuft es perfekt. Nur liegen halt leider die Framedaten nur als 8bit-Array vor und ich muss im Hauptprogramm die Framdaten in ein int-Array kopieren (und 2xshiften), was mir eigentlich zu lange dauert...

Code: Alles auswählen

void MainWindow::changeImageSize( int x_min, int x_max, int y_min, int y_max)
{
  qDebug() << "<changeImageSize>";
  unsigned int width=x_max-x_min+1;
  unsigned int height=y_max-y_min+1;

  delete img1;
  img1 = new QImage( width, height, QImage::Format_RGB32 );
  img1->fill(0x00FFFF);

  delete img2;
  img2 = new QImage( width, height, QImage::Format_Indexed8 );
  img2->setColorTable(colorTable);
  img2->fill(127);

  wcopy->resize(width, height);
  //wcopy->setPixmap(QPixmap::fromImage(*img2)); //crash...
  wcopy->setPixmap(QPixmap::fromImage(*img2));
}
Interessanterweise stürzt das Programm erst ab wenn ich setPixmap aufrufe...
Kann mir jemand sagen, wie ich evtl. doch ein ::Indexed8 QImage verwenden kann?

Gruß
Michael