| # Copyright (C) 2001-2004 Python Software Foundation | 
 | # Author: Barry Warsaw | 
 | # Contact: email-sig@python.org | 
 |  | 
 | """Class representing image/* type MIME documents.""" | 
 |  | 
 | import imghdr | 
 |  | 
 | from email import Errors | 
 | from email import Encoders | 
 | from email.MIMENonMultipart import MIMENonMultipart | 
 |  | 
 |  | 
 |  | 
 | class MIMEImage(MIMENonMultipart): | 
 |     """Class for generating image/* type MIME documents.""" | 
 |  | 
 |     def __init__(self, _imagedata, _subtype=None, | 
 |                  _encoder=Encoders.encode_base64, **_params): | 
 |         """Create an image/* type MIME document. | 
 |  | 
 |         _imagedata is a string containing the raw image data.  If this data | 
 |         can be decoded by the standard Python `imghdr' module, then the | 
 |         subtype will be automatically included in the Content-Type header. | 
 |         Otherwise, you can specify the specific image subtype via the _subtype | 
 |         parameter. | 
 |  | 
 |         _encoder is a function which will perform the actual encoding for | 
 |         transport of the image data.  It takes one argument, which is this | 
 |         Image instance.  It should use get_payload() and set_payload() to | 
 |         change the payload to the encoded form.  It should also add any | 
 |         Content-Transfer-Encoding or other headers to the message as | 
 |         necessary.  The default encoding is Base64. | 
 |  | 
 |         Any additional keyword arguments are passed to the base class | 
 |         constructor, which turns them into parameters on the Content-Type | 
 |         header. | 
 |         """ | 
 |         if _subtype is None: | 
 |             _subtype = imghdr.what(None, _imagedata) | 
 |         if _subtype is None: | 
 |             raise TypeError('Could not guess image MIME subtype') | 
 |         MIMENonMultipart.__init__(self, 'image', _subtype, **_params) | 
 |         self.set_payload(_imagedata) | 
 |         _encoder(self) |