void ScreenshotHandler::receiveImage(const Image<ColorRgb> & image) { // store as PNG QImage pngImage((const uint8_t *) image.memptr(), image.width(), image.height(), 3*image.width(), QImage::Format_RGB888); pngImage.save(_filename.c_str()); // Quit the application after the first image QCoreApplication::quit(); }
void SlideShow::LoadImages(wxArrayString images) { m_size = images.GetCount(); if (m_fileSystem) { for (int i=0; i<m_size; i++) { bool loadedImage = false; wxFSFile *fsfile = m_fileSystem->OpenFile(images[i]); if (fsfile) { // open sucessful wxInputStream *istream = fsfile->GetStream(); wxImage pngImage(*istream); if (pngImage.Ok()) { loadedImage = true; m_bitmaps.push_back(new wxBitmap(pngImage)); } delete fsfile; } if (!loadedImage) { wxBitmap *bitmap = new wxBitmap; bitmap->Create(400, 250); wxString error = wxString::Format(_("Error %d"), i); wxMemoryDC dc; dc.SelectObject(*bitmap); int width = 0, height = 0; dc.GetTextExtent(error, &width, &height); dc.DrawRectangle(0, 0, 400, 250); dc.DrawLine(0, 0, 400, 250); dc.DrawLine(0, 250, 400, 0); dc.DrawText(error, 200 - width/2, 125 - height/2); m_bitmaps.push_back(bitmap); } } m_fileSystem = NULL; } else for (int i=0; i<m_size; i++) { bool loadedImage = false; if (wxFileExists(images[i])) { wxBitmap *bitmap = new wxBitmap; if (bitmap->LoadFile(images[i], wxBITMAP_TYPE_PNG)) { loadedImage = true; m_bitmaps.push_back(bitmap); } else delete bitmap; wxRemoveFile(images[i]); } if (!loadedImage) { wxBitmap *bitmap = new wxBitmap; bitmap->Create(400, 250); wxString error = wxString::Format(_("Error %d"), i); wxMemoryDC dc; dc.SelectObject(*bitmap); int width = 0, height = 0; dc.GetTextExtent(error, &width, &height); dc.DrawRectangle(0, 0, 400, 250); dc.DrawLine(0, 0, 400, 250); dc.DrawLine(0, 250, 400, 0); dc.DrawText(error, 200 - width/2, 125 - height/2); m_bitmaps.push_back(bitmap); } } m_displayed = 0; }