code: def _open(self):
      # process header
      s = self.fp.read(18)
  
      id_len = i8(s[0])
  
      colormaptype = i8(s[1])
      imagetype = i8(s[2])
  
      depth = i8(s[16])
  
      flags = i8(s[17])
  
      self._size = i16(s[12:]), i16(s[14:])
  
      # validate header fields
      if (
          colormaptype not in (0, 1)
          or self.size[0] <= 0
          or self.size[1] <= 0
          or depth not in (1, 8, 16, 24, 32)
      ):
          raise SyntaxError("not a TGA file")
  
      # image mode
      if imagetype in (3, 11):
          self.mode = "L"
          if depth == 1:
              self.mode = "1"  # ???
          elif depth == 16:
              self.mode = "LA"
      elif imagetype in (1, 9):
          self.mode = "P"
      elif imagetype in (2, 10):
          self.mode = "RGB"
          if depth == 32:
              self.mode = "RGBA"
      else:
          raise SyntaxError("unknown TGA mode")
  
      # orientation
      orientation = flags & 0x30
      if orientation == 0x20:
          orientation = 1
      elif not orientation:
          orientation = -1
      else:
          raise SyntaxError("unknown TGA orientation")
  
      self.info["orientation"] = orientation
  
      if imagetype & 8:
          self.info["compression"] = "tga_rle"
  
      if id_len:
          self.info["id_section"] = self.fp.read(id_len)
  
      if colormaptype:
          # read palette
          start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:])
          if mapdepth == 16:
              self.palette = ImagePalette.raw(
                  "BGR;16", b"\0" * 2 * start + self.fp.read(2 * size)
              )
          elif mapdepth == 24:
              self.palette = ImagePalette.raw(
                  "BGR", b"\0" * 3 * start + self.fp.read(3 * size)
              )
          elif mapdepth == 32:
              self.palette = ImagePalette.raw(
                  "BGRA", b"\0" * 4 * start + self.fp.read(4 * size)
              )
  
      # setup tile descriptor
      try:
          rawmode = MODES[(imagetype & 7, depth)]
          if imagetype & 8:
              # compressed
              self.tile = [
                  (
                      "tga_rle",
                      (0, 0) + self.size,
                      self.fp.tell(),
                      (rawmode, orientation, depth),
                  )
              ]
          else:
              self.tile = [
                  (
                      "raw",
                      (0, 0) + self.size,
                      self.fp.tell(),
                      (rawmode, 0, orientation),
                  )
              ]
      except KeyError:
          pass
  
imports: import warnings
  from .None import Image, ImageFile, ImagePalette
  from ._binary import i8, i16le, o8, o16le
label_desc: Use image node_id 1 for calling the TgaImageFile obj's underlying member method code with example usage: obj._open() without return types