Sebastien,<br><br>This looks like a bug to me. I can't see itkTIFFImageIO closing the file. Also, the write should not silently fail.<br>Please enter a bug report:<br><a href="http://public.kitware.com/Bug/my_view_page.php">
http://public.kitware.com/Bug/my_view_page.php</a><br><br>Bill<br><br><div class="gmail_quote">On Dec 13, 2007 12:56 PM, Sébastien Fricker <<a href="mailto:sebastien.fricker@phaseview.net">sebastien.fricker@phaseview.net
</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thank you Xabi,<br>I have already tested writing to a different name and it works just fine.
<br>Only when input name == output name do I get a problem: the original file is<br>not modified.<br><br>The part of the code that fails is in Itktiffimageio.cxx, in the<br>TIFFImageIO::InternalWrite function.<br>The problem appears at the following piece of code:
<br><br> TIFF *tif = TIFFOpen(m_FileName.c_str(), "w");<br> if ( !tif )<br> {<br> itkDebugMacro( << "Returning" );<br> return;<br> }<br><br>In my case !tif == true because the image was already open at the beginning
<br>of the pipeline.<br><br>Surprisingly it works with BMP images though. Does this mean TIFF files<br>cannot be modified in-place?<br><br>Sebastien<br><div><div></div><div class="Wj3C7c"><br>-----Original Message-----<br>
From: insight-users-bounces+sebastien.fricker=<a href="mailto:phaseview.net@itk.org">phaseview.net@itk.org</a><br>[mailto:<a href="mailto:insight-users-bounces+sebastien.fricker=phaseview.net@itk.org">insight-users-bounces+sebastien.fricker=phaseview.net@itk.org
</a>] On<br>Behalf Of Xabier Artaechevarria Artieda<br>Sent: jeudi 13 décembre 2007 18:21<br>To: <a href="mailto:insight-users@itk.org">insight-users@itk.org</a><br>Subject: Re: [Insight-users] Overwriting TIFF files<br><br>
Hi Sébastien,<br>I think I have done this, sometimes without even realising :(<br>Try writing with a different name to see if that is the problem.<br>Good luck,<br>Xabi<br><br>--<br>Xabier Artaechevarria<br>Cancer Imaging Laboratory
<br>Centre for Applied Medical Research<br><a href="http://www.cima.es" target="_blank">www.cima.es</a><br><br><br><br>Sébastien Fricker <<a href="mailto:sebastien.fricker@phaseview.net">sebastien.fricker@phaseview.net
</a>> ha escrito:<br><br>> Dear ITK users,<br>><br>> I wrote a program that opens an image, transforms it via the Resample<br>image<br>> filter and writes the result to the original image file (see code fragment
<br>> below).<br>><br>> This works fine when I use BMP images.<br>><br>> It does not work when I use TIF images: the original image is not<br>modified.<br>> What happens is that the writer at the end does not do anything:
<br>apparently<br>> it cannot open the image for writing, probably because the same image was<br>> open for reading at the beginning of the pipeline.<br>><br>><br>><br>> Is this a bug or am I doing something wrong?
<br>><br>> How can I modify a TIF file in-place?<br>><br>><br>><br>> Thanks for any hint.<br>><br>><br>><br>> Sebastien<br>><br>><br>><br>> CODE FRAGMENT:<br>><br>><br>><br>
> --------------------------------------------------------<br>><br>><br>><br>> //DEFINE IMAGE TYPES<br>><br>> const unsigned int Dimension = 2;<br>><br>> typedef unsigned short PixelType;<br>>
<br>> typedef double InternalPixelType;<br>><br>> typedef itk::Image< PixelType, Dimension > ImageType;<br>><br>> typedef itk::Image< InternalPixelType, Dimension > InternalImageType;<br>><br>
><br>><br>> //READ INPUT IMAGE<br>><br>> typedef itk::ImageFileReader< ImageType > ImageReaderType;<br>><br>> ImageReaderType::Pointer inputImageReader = ImageReaderType::New();<br>><br>>
<br>><br>> inputImageReader->SetFileName( fileName );<br>><br>> inputImageReader->Update();<br>><br>> ImageType::Pointer inputImage = inputImageReader->GetOutput();<br>><br>><br>><br>>
<br>><br>> //RESAMPLE IMAGE<br>><br>> //Define filter, create one instance<br>><br>> typedef itk::ResampleImageFilter< InternalImageType, InternalImageType ><br>> ResampleFilterType;<br>><br>
> ResampleFilterType::Pointer resampler = ResampleFilterType::New();<br>><br>><br>><br>> resampler->SetInput( inputImage );<br>><br>><br>><br>> //MORE CODE HERE TO SET RESAMPLER PARAMETERS …<br>
><br>><br>><br>><br>><br>> //CAST IMAGE TO OUTPUT TYPE<br>><br>> typedef itk::CastImageFilter<<br>><br>> InternalImageType,<br>><br>> ImageType > CastFilterType;
<br>><br>> CastFilterType::Pointer caster = CastFilterType::New();<br>><br>><br>><br>> caster->SetInput( resampler->GetOutput() );<br>><br>><br>><br>> //WRITE OUTPUT FILE<br>><br>> typedef itk::ImageFileWriter< ImageType > WriterType;
<br>><br>> WriterType::Pointer writer = WriterType::New();<br>><br>><br>><br>> writer->SetFileName( fileName );<br>><br>> writer->SetInput( caster->GetOutput() );<br>><br>> writer->Update();
<br>><br>><br>><br>> --------------------------------------------------------<br>><br>><br>><br>><br>><br>><br><br><br><br>----------------------------------------------------------------<br>
Este mensaje ha sido enviado desde <a href="https://webmail.unav.es" target="_blank">https://webmail.unav.es</a><br><br>_______________________________________________<br>Insight-users mailing list<br><a href="mailto:Insight-users@itk.org">
Insight-users@itk.org</a><br><a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br><br>_______________________________________________<br>Insight-users mailing list
<br><a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br><a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br></div></div></blockquote>
</div><br>