예제 #1
0
 def __repr__(self):
     return "ImageResource(%r %s, %r, %s)" % (
         self.resource_id,
         ImageResourceID.name_of(self.resource_id),
         self.name,
         trimmed_repr(self.data),
     )
예제 #2
0
 def image_resource_blocks(self):
     """Returns dict of the underlying image resource blocks."""
     if not self._image_resource_blocks:
         self._image_resource_blocks = {
             ImageResourceID.name_of(block.resource_id).lower(): block.data
             for block in self.decoded_data.image_resource_blocks
         }
     return self._image_resource_blocks
예제 #3
0
 def _repr_pretty_(self, p, cycle):
     if cycle:
         p.text(repr(self))
     else:
         with p.group(0, 'ImageResource(', ')'):
             p.text("%r %s, %r, " % (
                 self.resource_id, ImageResourceID.name_of(self.resource_id),
                 self.name
             ))
             if isinstance(self.data, bytes):
                 p.text(trimmed_repr(self.data))
             else:
                 p.pretty(self.data)
예제 #4
0
    def image_resource_blocks(self):
        """
        Returns dict of the underlying image resource blocks. See
        :py:mod:`psd_tools.decoder.image_resources`

        :rtype: `dict`
        """
        if not self._image_resource_blocks:
            self._image_resource_blocks = {
                ImageResourceID.name_of(block.resource_id).lower(): block.data
                for block in self.decoded_data.image_resource_blocks
            }
        return self._image_resource_blocks
예제 #5
0
def _read_block(fp, encoding):
    """
    Reads single image resource block. Such blocks contain non-pixel data
    for the images (e.g. pen tool paths).
    """
    sig = fp.read(4)
    if not sig in (b'8BIM', b'MeSa'):
        raise Error("Invalid resource signature (%r)" % sig)

    resource_id = read_fmt("H", fp)[0]
    name = read_pascal_string(fp, encoding, 2)

    data_size = pad(read_fmt("I", fp)[0], 2)
    if not data_size:
        logger.debug(
            "Found image resource with no data (%d %s). Dropping..." % (
            resource_id, ImageResourceID.name_of(resource_id)
        ))
        return None

    data = fp.read(data_size)
    return ImageResource(resource_id, name, data)
예제 #6
0
 def __repr__(self):
     return "ImageResource(%r %s, %r, %s)" % (
         self.resource_id, ImageResourceID.name_of(
             self.resource_id), self.name, trimmed_repr(self.data))