def get_data(self, version=1): """Get decompressed bytes.""" if not self.is_written: return None width, height = self.rectangle[3], self.rectangle[2] return decompress(self.data, self.compression, width, height, self.depth, version)
def get_data(self, width, height, depth, version=1): """Get decompressed channel data. :param width: width. :param height: height. :param depth: bit depth of the pixel. :param version: psd file version. :rtype: bytes """ return decompress(self.data, self.compression, width, height, depth, version)
def get_data(self, header): """Get decompressed data. :param header: See :py:class:`~psd_tools.psd.header.FileHeader`. :return: list of bytes corresponding each channel. :rtype: list """ data = decompress(self.data, self.compression, header.width, header.height * header.channels, header.depth, header.version) plane_size = len(data) // header.channels with io.BytesIO(data) as f: return [f.read(plane_size) for _ in range(header.channels)]
def test_compress_decompress_fail(data, width, height, depth): decoded = decompress(data, Compression.ZIP_WITH_PREDICTION, width, height, depth) encoded = compress(decoded, Compression.ZIP_WITH_PREDICTION, width, height, depth) assert data == encoded
def test_compress_decompress(data, kind, width, height, depth, version): compressed = compress(data, kind, width, height, depth, version) output = decompress(compressed, kind, width, height, depth, version) assert output == data, 'output=%r, expected=%r' % (output, data)