Corrected BLP1 alpha depth handling by radarhere · Pull Request #8651 · python-pillow/Pillow
Resolves #8650
https://www.hiveworkshop.com/threads/blp-specifications-wc3.279306/ describes the start of the 'BLP File Header' as
uint32_t magic;
uint32_t content;
if (version >= 2) {
uint8_t encodingType; // not documented
uint8_t alphaBits;
uint8_t sampleType; // not documented
uint8_t hasMipmaps;
} else {
uint32_t alphaBits;
}
However, we don't currently perform different behaviour for BLP1, and only treat the data as if it was BLP2.
| (self._blp_encoding,) = struct.unpack("<b", self._safe_read(1)) | |
| (self._blp_alpha_depth,) = struct.unpack("<b", self._safe_read(1)) | |
| (self._blp_alpha_encoding,) = struct.unpack("<b", self._safe_read(1)) | |
| self.fd.seek(1, os.SEEK_CUR) # mips |
This PR fixes updates how the header data is handled for BLP1, for both reading and writing.