Buckets:
| # | |
| # The Python Imaging Library. | |
| # $Id$ | |
| # | |
| # PCD file handling | |
| # | |
| # History: | |
| # 96-05-10 fl Created | |
| # 96-05-27 fl Added draft mode (128x192, 256x384) | |
| # | |
| # Copyright (c) Secret Labs AB 1997. | |
| # Copyright (c) Fredrik Lundh 1996. | |
| # | |
| # See the README file for information on usage and redistribution. | |
| # | |
| from __future__ import annotations | |
| from . import Image, ImageFile | |
| ## | |
| # Image plugin for PhotoCD images. This plugin only reads the 768x512 | |
| # image from the file; higher resolutions are encoded in a proprietary | |
| # encoding. | |
| class PcdImageFile(ImageFile.ImageFile): | |
| format = "PCD" | |
| format_description = "Kodak PhotoCD" | |
| def _open(self) -> None: | |
| # rough | |
| assert self.fp is not None | |
| self.fp.seek(2048) | |
| s = self.fp.read(1539) | |
| if not s.startswith(b"PCD_"): | |
| msg = "not a PCD file" | |
| raise SyntaxError(msg) | |
| orientation = s[1538] & 3 | |
| self.tile_post_rotate = None | |
| if orientation == 1: | |
| self.tile_post_rotate = 90 | |
| elif orientation == 3: | |
| self.tile_post_rotate = 270 | |
| self._mode = "RGB" | |
| self._size = (512, 768) if orientation in (1, 3) else (768, 512) | |
| self.tile = [ImageFile._Tile("pcd", (0, 0, 768, 512), 96 * 2048)] | |
| def load_prepare(self) -> None: | |
| if self._im is None and self.tile_post_rotate: | |
| self.im = Image.core.new(self.mode, (768, 512)) | |
| ImageFile.ImageFile.load_prepare(self) | |
| def load_end(self) -> None: | |
| if self.tile_post_rotate: | |
| # Handle rotated PCDs | |
| self.im = self.rotate(self.tile_post_rotate, expand=True).im | |
| # | |
| # registry | |
| Image.register_open(PcdImageFile.format, PcdImageFile) | |
| Image.register_extension(PcdImageFile.format, ".pcd") | |
Xet Storage Details
- Size:
- 1.77 kB
- Xet hash:
- e90a0afd52a59fa67b1317150bbd19df2d5eef3110697258516c30e19189d212
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.