code: def _read_blp_header(self):
      (self._blp_compression,) = struct.unpack("<i", self._safe_read(4))
  
      (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._blp_mips,) = struct.unpack("<b", self._safe_read(1))
  
      self.size = struct.unpack("<II", self._safe_read(8))
  
      if self.magic == b"BLP1":
          # Only present for BLP1
          (self._blp_encoding,) = struct.unpack(
              "<i", self._safe_read(4)
          )
          (self._blp_subtype,) = struct.unpack("<i", self._safe_read(4))
  
      self._blp_offsets = struct.unpack("<16I", self._safe_read(16 * 4))
      self._blp_lengths = struct.unpack("<16I", self._safe_read(16 * 4))
  
imports: import struct
  from io import BytesIO
  from .None import Image, ImageFile
label_desc: Use image node_id 4 for calling the _BLPBaseDecoder obj's underlying member method code with example usage: obj._read_blp_header() without return types