def draw_image(self, image, alpha_channel=None): if not image: return if self.colorspace == uc2const.COLOR_CMYK: image = self.cms.convert_image(image, uc2const.IMAGE_CMYK) elif self.colorspace == uc2const.COLOR_RGB: image = self.cms.convert_image(image, uc2const.IMAGE_RGB) elif self.colorspace == uc2const.COLOR_GRAY: image = self.cms.convert_image(image, uc2const.IMAGE_GRAY) img = ImageReader(image) img.getRGBData() if alpha_channel: img._dataA = ImageReader(alpha_channel) self.canvas.drawImage(img, 0, 0, mask='auto')
def makeA85Image(filename, IMG=None): import zlib img = ImageReader(filename) if IMG is not None: IMG.append(img) imgwidth, imgheight = img.getSize() raw = img.getRGBData() code = [] append = code.append # this describes what is in the image itself append('BI') append('/W %s /H %s /BPC 8 /CS /%s /F [/A85 /Fl]' % (imgwidth, imgheight, _mode2cs[img.mode])) append('ID') #use a flate filter and Ascii Base 85 assert len(raw) == imgwidth * imgheight * _mode2bpp[ img.mode], "Wrong amount of data for image" compressed = zlib.compress(raw) #this bit is very fast... encoded = _AsciiBase85Encode(compressed) #...sadly this may not be #append in blocks of 60 characters _chunker(encoded, code) append('EI') return code
def makeRawImage(filename, IMG=None, detectJpeg=False): import zlib img = ImageReader(filename) if IMG is not None: IMG.append(img) if detectJpeg and img.jpeg_fh(): return None imgwidth, imgheight = img.getSize() raw = img.getRGBData() code = [] append = code.append # this describes what is in the image itself append('BI') append('/W %s /H %s /BPC 8 /CS /%s /F [/Fl]' % (imgwidth, imgheight, _mode2cs[img.mode])) append('ID') #use a flate filter assert len(raw) == imgwidth * imgheight * _mode2bpp[ img.mode], "Wrong amount of data for image" compressed = zlib.compress(raw) #this bit is very fast... #append in blocks of 60 characters _chunker(compressed, code) append('EI') return code
def makeRawImage(filename,IMG=None,detectJpeg=False): import zlib img = ImageReader(filename) if IMG is not None: IMG.append(img) if detectJpeg and img.jpeg_fh(): return None imgwidth, imgheight = img.getSize() raw = img.getRGBData() code = [] append = code.append # this describes what is in the image itself append('BI') append('/W %s /H %s /BPC 8 /CS /%s /F [/Fl]' % (imgwidth, imgheight,_mode2cs[img.mode])) append('ID') #use a flate filter assert len(raw) == imgwidth * imgheight*_mode2bpp[img.mode], "Wrong amount of data for image" compressed = zlib.compress(raw) #this bit is very fast... #append in blocks of 60 characters _chunker(compressed,code) append('EI') return code
def test(self): from reportlab.lib.testutils import testsFolder from reportlab.lib.utils import rl_isfile imageFileName = os.path.join(testsFolder,'pythonpowered.gif') assert rl_isfile(imageFileName), "%s not found!" % imageFileName ir = ImageReader(imageFileName) assert ir.getSize() == (110,44) pixels = ir.getRGBData() assert md5(pixels).hexdigest() == '02e000bf3ffcefe9fc9660c95d7e27cf'
def test(self): from reportlab.lib.testutils import testsFolder from reportlab.lib.utils import rl_isfile imageFileName = os.path.join(testsFolder, 'pythonpowered.gif') assert rl_isfile(imageFileName), "%s not found!" % imageFileName ir = ImageReader(imageFileName) assert ir.getSize() == (110, 44) pixels = ir.getRGBData() assert md5(pixels).hexdigest() == '02e000bf3ffcefe9fc9660c95d7e27cf'
def test(self): import reportlab.test from reportlab.lib.utils import rl_isfile imageFileName = os.path.dirname(reportlab.test.__file__) + os.sep + 'pythonpowered.gif' assert rl_isfile(imageFileName), "%s not found!" % imageFileName ir = ImageReader(imageFileName) assert ir.getSize() == (110,44) pixels = ir.getRGBData() assert md5.md5(pixels).hexdigest() == '02e000bf3ffcefe9fc9660c95d7e27cf'
def cacheImageFile(filename, returnInMemory=0, IMG=None): "Processes image as if for encoding, saves to a file with .a85 extension." from reportlab.lib.utils import open_for_read import zlib cachedname = os.path.splitext(filename)[0] + '.a85' if filename==cachedname: if cachedImageExists(filename): if returnInMemory: return split(open_for_read(cachedname).read(),LINEEND)[:-1] else: raise IOError, 'No such cached image %s' % filename else: img = ImageReader(filename) if IMG is not None: IMG.append(img) imgwidth, imgheight = img.getSize() raw = img.getRGBData() code = [] # this describes what is in the image itself code.append('BI') code.append('/W %s /H %s /BPC 8 /CS /RGB /F [/A85 /Fl]' % (imgwidth, imgheight)) code.append('ID') #use a flate filter and Ascii Base 85 assert(len(raw) == imgwidth * imgheight, "Wrong amount of data for image") compressed = zlib.compress(raw) #this bit is very fast... encoded = _AsciiBase85Encode(compressed) #...sadly this may not be #append in blocks of 60 characters _chunker(encoded,code) code.append('EI') if returnInMemory: return code #save it to a file f = open(cachedname,'wb') f.write(join(code, LINEEND)+LINEEND) f.close() if rl_config.verbose: print 'cached image as %s' % cachedname
def makeA85Image(filename,IMG=None): import zlib img = ImageReader(filename) if IMG is not None: IMG.append(img) imgwidth, imgheight = img.getSize() raw = img.getRGBData() code = [] append = code.append # this describes what is in the image itself append('BI') append('/W %s /H %s /BPC 8 /CS /%s /F [/A85 /Fl]' % (imgwidth, imgheight,_mode2cs[img.mode])) append('ID') #use a flate filter and Ascii Base 85 assert len(raw) == imgwidth * imgheight*_mode2bpp[img.mode], "Wrong amount of data for image" compressed = zlib.compress(raw) #this bit is very fast... encoded = _AsciiBase85Encode(compressed) #...sadly this may not be #append in blocks of 60 characters _chunker(encoded,code) append('EI') return code
def getRGBData(self): return ImageReader.getRGBData(self)