<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Hi Xie,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">the purpose of CreateInstance method is to be implemented (over-ridden) by sub-classes. Each sub-class would create instance of itself. I guess the base class just creates an instance of the first registered factory.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Normally, reader->setImageio is not necessary. Try it. The reader asks all the imageIOs whether they can read the file  (based on the filename extension) until one IO can read. If files have no extension or an un-matching extension, than setting imageIO should be used. Also, if you will only work with one type of files, you can manually set that imageIO to save a few CPU cycles by not checking different imageIOs when opening files.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Regards,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Dženan</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 22, 2016 at 4:14 AM, 谢玮宜 <span dir="ltr"><<a href="mailto:weiehome@sina.com" target="_blank">weiehome@sina.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Dear ITK experts,<br>
<br>
I recently have some problems with using ITK ImageIO factory functions.<br>
When I tried to use ObjectFactoryBase::CreateInstance(const char<br>
*itkclassname) with itkclassname like itkPNGImageIO, it is not working. The<br>
purpose is to create an image io instance by classname using RTTI.<br>
I did debug into the code and then I found itkclassname has to be<br>
itkImageIOBase, then it will create always the first ImageIO instance in<br>
override map. I got really confused what is the purpose of this API<br>
"CreateInstance(classname)".<br>
<br>
I also print out all registered ImageIO factories and I found gdcmImageIO is<br>
in it. So what is the purpose that in example of dicom images reading and<br>
write, everytime we have to manually call reader->setImageio(<br>
gdcmIO::New())?<br>
As I understood, if an imageIO is registered already, the reader will<br>
automatically check when it is reading a file to see if the format is<br>
supported by an underlying IO.<br>
<br>
Please correct me. I think I somehow got seriously wrong with the underlying<br>
concept of itk IO mechanism.<br>
Thank you all in advance!<br>
<br>
BR,xie<br>
<br>
<br>
_______________________________________________<br>
Community mailing list<br>
<a href="mailto:Community@itk.org">Community@itk.org</a><br>
<a href="http://public.kitware.com/mailman/listinfo/community" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/community</a><br>
</blockquote></div><br></div>