user: Explain ShaderNodeTexImage(ShaderNode) in complete detail according to the official Blender documentation.

assistant: # ShaderNodeTexImage(ShaderNode)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal"), [`ShaderNode`](bpy.types.ShaderNode.html#bpy.types.ShaderNode "bpy.types.ShaderNode")

*class* bpy.types.ShaderNodeTexImage(*ShaderNode*)
:   Sample an image file as a texture

    color_mapping
    :   Color mapping settings

        Type:
        :   [`ColorMapping`](bpy.types.ColorMapping.html#bpy.types.ColorMapping "bpy.types.ColorMapping"), (readonly, never None)

    extension
    :   How the image is extrapolated past its original bounds

        - `REPEAT`
          Repeat – Cause the image to repeat horizontally and vertically.
        - `EXTEND`
          Extend – Extend by repeating edge pixels of the image.
        - `CLIP`
          Clip – Clip to image size and set exterior pixels as transparent.
        - `MIRROR`
          Mirror – Repeatedly flip the image horizontally and vertically.

        Type:
        :   enum in [`'REPEAT'`, `'EXTEND'`, `'CLIP'`, `'MIRROR'`], default `'REPEAT'`

    image
    :   Type:
        :   [`Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image")

    image_user
    :   Parameters defining which layer, pass and frame of the image is displayed

        Type:
        :   [`ImageUser`](bpy.types.ImageUser.html#bpy.types.ImageUser "bpy.types.ImageUser"), (readonly, never None)

    interpolation
    :   Texture interpolation

        - `Linear`
          Linear – Linear interpolation.
        - `Closest`
          Closest – No interpolation (sample closest texel).
        - `Cubic`
          Cubic – Cubic interpolation.
        - `Smart`
          Smart – Bicubic when magnifying, else bilinear (OSL only).

        Type:
        :   enum in [`'Linear'`, `'Closest'`, `'Cubic'`, `'Smart'`], default `'Linear'`

    projection
    :   Method to project 2D image on object with a 3D texture vector

        - `FLAT`
          Flat – Image is projected flat using the X and Y coordinates of the texture vector.
        - `BOX`
          Box – Image is projected using different components for each side of the object space bounding box.
        - `SPHERE`
          Sphere – Image is projected spherically using the Z axis as central.
        - `TUBE`
          Tube – Image is projected from the tube using the Z axis as central.

        Type:
        :   enum in [`'FLAT'`, `'BOX'`, `'SPHERE'`, `'TUBE'`], default `'FLAT'`

    projection_blend
    :   For box projection, amount of blend to use between sides

        Type:
        :   float in [0, 1], default 0.0

    texture_mapping
    :   Texture coordinate mapping settings

        Type:
        :   [`TexMapping`](bpy.types.TexMapping.html#bpy.types.TexMapping "bpy.types.TexMapping"), (readonly, never None)

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

        Return type:
        :   [`NodeInternalSocketTemplate`](bpy.types.NodeInternalSocketTemplate.html#bpy.types.NodeInternalSocketTemplate "bpy.types.NodeInternalSocketTemplate")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type