mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			47 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# Copyright (C) 2001-2006 Python Software Foundation
							 | 
						|||
| 
								 | 
							
								# Author: Barry Warsaw
							 | 
						|||
| 
								 | 
							
								# Contact: email-sig@python.org
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								"""Class representing image/* type MIME documents."""
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								__all__ = ['MIMEImage']
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								import imghdr
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								from email import encoders
							 | 
						|||
| 
								 | 
							
								from email.mime.nonmultipart 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)
							 |