void mitk::QmitkIOUtil::SavePointSetWithDialog(mitk::PointSet::Pointer pointset, std::string fileName, QWidget *parent) { //default selected suffix for point sets QString selected_suffix("MITK Point-Sets (*.mps)"); QString possible_suffixes("MITK Point-Sets (*.mps)"); //default initial file name QString initialFilename("NewPointSet"); //default image extension initialFilename.append((mitk::IOUtil::DEFAULTPOINTSETEXTENSION).c_str()); //if any filename is supplied by the user, use it if( !fileName.empty() ) { initialFilename = fileName.c_str(); } QString qfileName = GetFileNameWithQDialog("Save PointSet", initialFilename , possible_suffixes, &selected_suffix, parent); //do nothing if the user presses cancel if ( qfileName.isEmpty() ) return; try{ mitk::IOUtil::SavePointSet(pointset,qfileName.toLocal8Bit().constData()); } catch(mitk::Exception &e) { MITK_ERROR << "error saving file: " << e.what(); std::string msg("Could not save pointset.\n Error: "); msg.append(e.what()); QMessageBox::critical( NULL, "Exception during saving", msg.c_str(), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } }
void mitk::QmitkIOUtil::SaveSurfaceWithDialog(mitk::Surface::Pointer surface, std::string fileName, QWidget* parent) { //default selected suffix for surfaces QString selected_suffix("STL File (*.stl)"); QString possible_suffixes("STL File (*.stl);; VTK File (*.vtk);; VTP File (*.vtp)"); //default initial file name QString initialFilename("NewSurface"); //default image extension initialFilename.append((mitk::IOUtil::DEFAULTSURFACEEXTENSION).c_str()); //if any filename is supplied by the user, use it if( !fileName.empty() ) { initialFilename = fileName.c_str(); } QString qfileName = GetFileNameWithQDialog("Save Surface", initialFilename , possible_suffixes, &selected_suffix, parent); //do nothing if the user presses cancel if ( qfileName.isEmpty() ) return; try{ mitk::IOUtil::SaveSurface(surface,qfileName.toLocal8Bit().constData()); } catch(mitk::Exception &e) { MITK_ERROR << "error saving file: " << e.what(); std::string msg("Could not save surface.\n Error: "); msg.append(e.what()); QMessageBox::critical( NULL, "Exception during saving", msg.c_str(), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } }
void mitk::QmitkIOUtil::SaveImageWithDialog(mitk::Image::Pointer image, std::string fileName, QWidget *parent) { //default selected suffix for images QString selected_suffix("Nearly Raw Raster Data (*.nrrd)"); //default initial file name QString initialFilename("NewImage"); //default image extension initialFilename.append((mitk::IOUtil::DEFAULTIMAGEEXTENSION).c_str()); //if any filename is supplied by the user, use it if( !fileName.empty() ) { initialFilename = fileName.c_str(); } QString qfileName = GetFileNameWithQDialog("Save Image", initialFilename, mitk::ImageWriter::New()->GetFileDialogPattern(), &selected_suffix,parent); //do nothing if the user presses cancel if ( qfileName.isEmpty() ) return; try { mitk::IOUtil::SaveImage(image, qfileName.toLocal8Bit().constData()); } catch(mitk::Exception &e) { MITK_ERROR << "error saving file: " << e.what(); std::string msg("Could not save image.\n Error: "); msg.append(e.what()); QMessageBox::critical( NULL, "Exception during saving", msg.c_str(), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } }
std::string CommonFunctionality::SaveImage(mitk::Image* image, const char* aFileName, bool askForDifferentFilename) { QString selected_suffix("Nearly Raw Raster Data (*.nrrd)"); std::string defaultExtension = ".nrrd"; std::string fileName; if(aFileName == NULL || askForDifferentFilename) { QString initialFilename(aFileName); if (initialFilename.isEmpty()) initialFilename = "NewImage.pic"; QString qfileName = GetSaveFileNameStartingInLastDirectory("Save image", initialFilename ,mitk::CoreObjectFactory::GetInstance()->GetSaveFileExtensions(),&selected_suffix); MITK_INFO<<qfileName.toLocal8Bit().constData(); if (qfileName.isEmpty() ) return ""; fileName = qfileName.toLocal8Bit().constData(); } else fileName = aFileName; try { std::string dir = itksys::SystemTools::GetFilenamePath( fileName ); std::string baseFilename = itksys::SystemTools::GetFilenameWithoutLastExtension( fileName ); std::string extension = itksys::SystemTools::GetFilenameLastExtension( fileName ); if( extension == "" ) extension = defaultExtension; if (extension == ".gz") { QMessageBox::critical( NULL, "SaveDialog", "Warning: You can not save an image in the compressed \n" ".pic.gz format. You must save as a normal .pic file.\n" "Please press Save again and choose a filename with a .pic ending.", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); return ""; } // check if extension is suitable for writing image data mitk::ImageWriter::Pointer imageWriter = mitk::ImageWriter::New(); if (!imageWriter->IsExtensionValid(extension)) { // muellerm, 12-05-02, using default file extension // if no valid extension was given, see bug 11799 MITK_WARN << extension << " extension is unknown. Writing image to file " << fileName << defaultExtension; extension = defaultExtension; baseFilename = itksys::SystemTools::GetFilenameName( fileName ); //MITK_INFO << baseFilename; /* QString message; message.append("File extension not suitable for writing image data. Choose one extension of this list: "); message.append(imageWriter->GetPossibleFileExtensionsAsString().c_str()); QMessageBox::critical(NULL,"ERROR",message); return ""; */ } dir += "/"; dir += baseFilename; if( itksys::SystemTools::FileExists( (dir + extension).c_str() ) ) { int answer = QMessageBox::question( QApplication::topLevelWidgets().at(0), "Warning", QString("File %1 already exists. Overwrite?").arg( QString::fromStdString(dir + extension) ), QMessageBox::Yes, QMessageBox::No ); if( answer == QMessageBox::No ) return ""; } // Check if Image data/ Geometry information is lost if (image->GetDimension() == 2) { if (!image->GetGeometry()->Is2DConvertable()) { // information will be lost, if continuing to save this file as 2D // tell it the user and offer to save it as 3D // todo: if format is png, jpg, etc.. forget it, no geometry information at all QMessageBox msgBox; msgBox.setText("You are trying to save a 2D image that has 3D geometry informations."); msgBox.setInformativeText("You will lose the 3D geometry information this way. Do you rather want to save it as a 3D image?"); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Yes); int ret = msgBox.exec(); if (ret == QMessageBox::YesRole) { // convert image to 2D mitk::Convert2Dto3DImageFilter::Pointer convertFilter = mitk::Convert2Dto3DImageFilter::New(); convertFilter->SetInput(image); convertFilter->Update(); image = convertFilter->GetOutput(); } else if (ret == QMessageBox::NoRole) { // Continue Saving as 2D } else { // Abort, don't save anything return 0; } } } // write image imageWriter->SetInput(image); imageWriter->SetFileName(dir.c_str()); imageWriter->SetExtension(extension.c_str()); imageWriter->Write(); fileName = dir + extension; } catch ( itk::ExceptionObject &err) { itkGenericOutputMacro( << "Exception during write: " << err ); QString exceptionString; exceptionString.append("Error during write image: "); exceptionString.append(err.GetDescription()); QMessageBox::critical(NULL,"ERROR",exceptionString); return ""; } catch ( ... ) { itkGenericOutputMacro( << "Unknown type of exception during write" ); QMessageBox::critical(NULL,"ERROR","Error during write image. Possibly no writing permission."); fileName = ""; } return fileName; }