void ImageReader::read() { assert( !m_object.expired() ); assert( m_object.lock() ); ::fwData::Image::sptr pImage = getConcreteObject(); vtkSmartPointer< vtkGenericDataObjectReader > reader = vtkSmartPointer< vtkGenericDataObjectReader >::New(); reader->SetFileName(this->getFile().string().c_str()); //add progress observation Progressor progress(reader, this->getSptr(), this->getFile().string()); reader->Update(); vtkDataObject *obj = reader->GetOutput(); vtkImageData* img = vtkImageData::SafeDownCast(obj); FW_RAISE_IF("ImageReader cannot read VTK image file :"<<this->getFile().string(), !img); try { ::vtkIO::fromVTKImage( img, pImage); } catch( std::exception &e) { FW_RAISE("VTKImage to fwData::Image failed "<<e.what()); } }
void GzBufferImageWriter::write() { assert( getFile().empty() == false ); ::fwData::Image::sptr image = getConcreteObject(); OSLM_TRACE( "GzBufferImageWriter::write()" << image.get() << " " << image->className()) ; /// test if can open archive gzFile rawFile = gzopen( getFile().string().c_str(), "wb1"); SLM_ASSERT("rawFile not instanced", rawFile); if ( rawFile == 0 ) { std::string str = "GzBufferImageWriter::write unable to open "; str+= getFile().string(); gzclose(rawFile); throw std::ios_base::failure(str); } ::fwComEd::helper::Image imageHelper(image); // file is OK : process now size_t imageSizeInBytes = image->getSizeInBytes(); char *ptr = static_cast<char*>(imageHelper.getBuffer()); size_t writtenBytes = 0; int uncompressedbyteswrited; while ( writtenBytes < imageSizeInBytes && (uncompressedbyteswrited = gzwrite(rawFile, ptr+writtenBytes, imageSizeInBytes-writtenBytes)) > 0 ) { writtenBytes += uncompressedbyteswrited; } gzclose(rawFile); assert( uncompressedbyteswrited != 0 && writtenBytes==imageSizeInBytes); if ( uncompressedbyteswrited != 0 && writtenBytes==imageSizeInBytes) { std::string str = "GzBufferImageWriter::write unable to write "; str+= getFile().string(); throw std::ios_base::failure(str); } }
void MeshWriter::write() { assert( !m_object.expired() ); assert( m_object.lock() ); ::fwData::Mesh::sptr pMesh = getConcreteObject(); vtkSmartPointer< vtkGenericDataObjectWriter > writer = vtkSmartPointer< vtkGenericDataObjectWriter >::New(); vtkSmartPointer< vtkPolyData > vtkMesh = vtkSmartPointer< vtkPolyData >::New(); ::vtkIO::helper::Mesh::toVTKMesh( pMesh, vtkMesh); writer->SetInput( vtkMesh ); writer->SetFileName(this->getFile().string().c_str()); writer->SetFileTypeToBinary(); //add progress observation Progressor progress(writer, this->getSptr(), this->getFile().string()); writer->Update(); }
void MeshReader::read() { assert( !m_object.expired() ); assert( m_object.lock() ); ::fwData::Mesh::sptr pMesh = getConcreteObject(); vtkSmartPointer< vtkGenericDataObjectReader > reader = vtkSmartPointer< vtkGenericDataObjectReader >::New(); reader->SetFileName(this->getFile().string().c_str()); //add progress observation Progressor progress(reader, this->getSptr(), this->getFile().string()); reader->Update(); vtkDataObject *obj = reader->GetOutput(); vtkPolyData* mesh = vtkPolyData::SafeDownCast(obj); FW_RAISE_IF("MeshReader cannot read VTK Mesh file : "<< this->getFile().string(), !mesh); ::vtkIO::helper::Mesh::fromVTKMesh(mesh, pMesh); }
void GzBufferImageReader::read() { assert( ::fwData::location::SingleFile::dynamicCast(m_location) ); ::boost::filesystem::path file = ::fwData::location::SingleFile::dynamicCast(m_location)->getPath(); assert( file.empty() == false ); ::fwData::Image::sptr image = getConcreteObject(); size_t imageSizeInBytes = image->getSizeInBytes(); image->allocate(); ::fwDataTools::helper::Image helper(image); char* ptr = static_cast<char*>(helper.getBuffer()); gzFile rawFile = gzopen(file.string().c_str(), "rb"); SLM_ASSERT("rawFile not instanced", rawFile); if ( rawFile == 0 ) { std::string str = "Unable to open "; str += file.string(); throw std::ios_base::failure(str); } int uncompressedbytesreaded; size_t readBytes = 0; while ( (uncompressedbytesreaded = gzread(rawFile, ptr + readBytes, imageSizeInBytes - readBytes)) > 0 ) { readBytes += uncompressedbytesreaded; } gzclose(rawFile); if ( uncompressedbytesreaded == -1 ) { std::string str = "Unable to read "; str += file.string(); throw std::ios_base::failure(str); } }
void VtiImageWriter::write() { assert( !m_object.expired() ); assert( m_object.lock() ); ::fwData::Image::sptr pImage = getConcreteObject(); vtkSmartPointer< vtkXMLImageDataWriter > writer = vtkSmartPointer< vtkXMLImageDataWriter >::New(); vtkSmartPointer< vtkImageData > vtkImage = vtkSmartPointer< vtkImageData >::New(); ::fwVtkIO::toVTKImage( pImage, vtkImage ); writer->SetInputData( vtkImage ); writer->SetFileName( this->getFile().string().c_str() ); writer->SetDataModeToAppended(); vtkSmartPointer< vtkZLibDataCompressor > compressor = vtkSmartPointer< vtkZLibDataCompressor >::New(); compressor->SetCompressionLevel(1); writer->SetCompressor( compressor ); writer->EncodeAppendedDataOff(); Progressor progress(writer, this->getSptr(), this->getFile().string()); writer->Write(); }