code: def _read_blp_header(self):
      self.fd.seek(4)
      (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.fd.seek(1, os.SEEK_CUR)  # mips
  
      self.size = struct.unpack("<II", self._safe_read(8))
  
      if isinstance(self, BLP1Decoder):
          # Only present for BLP1
          (self._blp_encoding,) = struct.unpack(
              "<i", self._safe_read(4)
          )
          self.fd.seek(4, os.SEEK_CUR)  # subtype
  
      self._blp_offsets = struct.unpack("<16I", self._safe_read(16 * 4))
      self._blp_lengths = struct.unpack("<16I", self._safe_read(16 * 4))
  
imports: from __future__ import annotations
  import os
  import struct
  from enum import IntEnum
  from io import BytesIO
  from .None import Image, ImageFile
label_desc: Use image node_id 2 for calling the _BLPBaseDecoder obj's underlying member method code with example usage: obj._read_blp_header() without return types