diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h
index 6ca86c9..8b70f5d 100644
--- a/Magick++/lib/Magick++/Include.h
+++ b/Magick++/lib/Magick++/Include.h
@@ -728,6 +728,7 @@
   using MagickCore::GetImageClipMask;
   using MagickCore::GetImageDepth;
   using MagickCore::GetImageInfo;
+  using MagickCore::GetImageInfoFile;
   using MagickCore::GetImageOption;
   using MagickCore::GetAuthenticPixels;
   using MagickCore::GetImageProfile;
@@ -852,6 +853,7 @@
   using MagickCore::SetImageDepth;
   using MagickCore::SetImageExtent;
   using MagickCore::SetImageInfo;
+  using MagickCore::SetImageInfoFile;
   using MagickCore::SetImageOpacity;
   using MagickCore::SetImageOption;
   using MagickCore::SetImageProfile;
diff --git a/Magick++/lib/Magick++/Options.h b/Magick++/lib/Magick++/Options.h
index 1e308db..47136f4 100644
--- a/Magick++/lib/Magick++/Options.h
+++ b/Magick++/lib/Magick++/Options.h
@@ -88,6 +88,10 @@
     EndianType      endian ( void ) const;
 
     // Image filename to read or write
+    void            file ( FILE *file_ );
+    FILE*           file ( void ) const;
+
+    // Image filename to read or write
     void            fileName ( const std::string &fileName_ );
     std::string     fileName ( void ) const;
 
diff --git a/Magick++/lib/Options.cpp b/Magick++/lib/Options.cpp
index 5bae6c6..a9cd525 100644
--- a/Magick++/lib/Options.cpp
+++ b/Magick++/lib/Options.cpp
@@ -228,6 +228,15 @@
   return _imageInfo->endian;
 }
 
+void Magick::Options::file ( FILE *file_ )
+{
+  SetImageInfoFile(_imageInfo, file_ );
+}
+FILE *Magick::Options::file ( void ) const
+{
+  return _imageInfo->file;
+}
+
 void Magick::Options::fileName ( const std::string &fileName_ )
 {
   fileName_.copy( _imageInfo->filename, MaxTextExtent-1 );
diff --git a/magick/image.c b/magick/image.c
index 58352f3..7b3750e 100644
--- a/magick/image.c
+++ b/magick/image.c
@@ -1569,6 +1569,33 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   G e t I m a g e I n f o F i l e                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageInfoFile() returns the image info file member.
+%
+%  The format of the GetImageInfoFile method is:
+%
+%      FILE *GetImageInfoFile(const ImageInfo *image_info)
+%
+%  A description of each parameter follows:
+%
+%    o image_info: the image info.
+%
+*/
+MagickExport FILE *GetImageInfoFile(const ImageInfo *image_info)
+{
+  return(image_info->file);
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   G e t I m a g e M a s k                                                   %
 %                                                                             %
 %                                                                             %
diff --git a/magick/image.h b/magick/image.h
index 4ba7b70..254a193 100644
--- a/magick/image.h
+++ b/magick/image.h
@@ -478,6 +478,9 @@
 extern MagickExport ExceptionType
   CatchImageException(Image *);
 
+extern MagickExport FILE
+  *GetImageInfoFile(const ImageInfo *);
+
 extern MagickExport Image
   *AcquireImage(const ImageInfo *),
   *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
