def get_decoder(self): decoder = MockPyDecoder(None) def closure(mode, *args): decoder.__init__(mode, *args) return decoder Image.register_decoder('MOCK', closure) return decoder
def decode(self, buffer): try: self.set_as_raw(_dxt1(self.fd, self.state.xsize, self.state.ysize)) except struct.error: raise IOError("Truncated DDS file") return 0, 0 class DXT5Decoder(ImageFile.PyDecoder): _pulls_fd = True def decode(self, buffer): try: self.set_as_raw(_dxt5(self.fd, self.state.xsize, self.state.ysize)) except struct.error: raise IOError("Truncated DDS file") return 0, 0 Image.register_decoder('DXT1', DXT1Decoder) Image.register_decoder('DXT5', DXT5Decoder) def _validate(prefix): return prefix[:4] == b"DDS " Image.register_open(DdsImageFile.format, DdsImageFile, _validate) Image.register_extension(DdsImageFile.format, ".dds")