# GetPixels

> Gets the pixel color data for a mipmap level of a slice as Color structs.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## GetPixels(int, int)

Gets the pixel color data for a mipmap level of a slice as [Color](/engine/6000.7/script-reference/unityengine/color.md) structs.

```csharp
public Color[] GetPixels(int arrayElement, int miplevel)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The array slice to read pixel data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The mipmap level to get. The range is `0` through the texture's [Texture.mipmapCount](/engine/6000.7/script-reference/unityengine/texture/mipmapcount.md). The default value is `0`.

### Returns

| Type                                                              | Description                              |
| ----------------------------------------------------------------- | ---------------------------------------- |
| [Color\[\]](/engine/6000.7/script-reference/unityengine/color.md) | An array that contains the pixel colors. |

### Remarks

This method gets pixel data from the texture in CPU memory. [Texture.isReadable](/engine/6000.7/script-reference/unityengine/texture/isreadable.md) must be `true`.

The array contains the pixels row by row, starting at the bottom left of the texture. The size of the array is the width × height of the mipmap level.

Each pixel is a [Color](/engine/6000.7/script-reference/unityengine/color.md) struct. `GetPixels` might be slower than some other texture methods because it converts the format the texture uses into [Color](/engine/6000.7/script-reference/unityengine/color.md). `GetPixels` also needs to decompress compressed textures, and use memory to store the decompressed area. To get pixel data more quickly, use [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md) instead.

If `GetPixels` fails, Unity throws an exception. `GetPixels` might fail if the array contains too much data. Use [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md) instead for very large textures.

You can't use `GetPixel` with textures that use Crunch texture compression. Use [Texture2DArray.GetPixels32](/engine/6000.7/script-reference/unityengine/texture2darray/getpixels32.md) instead.

```csharp
using UnityEngine;

public class Texture2DArrayExample : MonoBehaviour
{
    public Texture2DArray source;
    public Texture2DArray destination;

    void Start()
    {
        // Get a copy of the color data from the source Texture2DArray, in high-precision float format.
        // Each element in the array represents the color data for an individual pixel.
        int sourceSlice = 0;
        int sourceMipLevel = 0;
        Color[] pixels = source.GetPixels(sourceSlice, sourceMipLevel);

        // If required, manipulate the pixels before applying them to the destination Texture2DArray.
        // This example code reverses the array, which rotates the image 180 degrees.
        System.Array.Reverse(pixels, 0, pixels.Length);

        // Set the pixels of the destination Texture2DArray.
        int destinationSlice = 0;
        int destinationMipLevel = 0;
        destination.SetPixels(pixels, destinationSlice, destinationMipLevel);

        // Apply changes to the destination Texture2DArray, which uploads its data to the GPU.
        destination.Apply();
    }
}
```

Additional Resources: [Texture2DArray.GetPixels32](/engine/6000.7/script-reference/unityengine/texture2darray/getpixels32.md), [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md), [Texture2DArray.SetPixels](/engine/6000.7/script-reference/unityengine/texture2darray/setpixels.md), [Graphics.CopyTexture](/engine/6000.7/script-reference/unityengine/graphics/copytexture.md).

## GetPixels(int)

Gets the pixel color data for a mipmap level of a slice as [Color](/engine/6000.7/script-reference/unityengine/color.md) structs.

```csharp
public Color[] GetPixels(int arrayElement)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The array slice to read pixel data from.

### Returns

| Type                                                              | Description                              |
| ----------------------------------------------------------------- | ---------------------------------------- |
| [Color\[\]](/engine/6000.7/script-reference/unityengine/color.md) | An array that contains the pixel colors. |

### Remarks

This method gets pixel data from the texture in CPU memory. [Texture.isReadable](/engine/6000.7/script-reference/unityengine/texture/isreadable.md) must be `true`.

The array contains the pixels row by row, starting at the bottom left of the texture. The size of the array is the width × height of the mipmap level.

Each pixel is a [Color](/engine/6000.7/script-reference/unityengine/color.md) struct. `GetPixels` might be slower than some other texture methods because it converts the format the texture uses into [Color](/engine/6000.7/script-reference/unityengine/color.md). `GetPixels` also needs to decompress compressed textures, and use memory to store the decompressed area. To get pixel data more quickly, use [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md) instead.

If `GetPixels` fails, Unity throws an exception. `GetPixels` might fail if the array contains too much data. Use [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md) instead for very large textures.

You can't use `GetPixel` with textures that use Crunch texture compression. Use [Texture2DArray.GetPixels32](/engine/6000.7/script-reference/unityengine/texture2darray/getpixels32.md) instead.

```csharp
using UnityEngine;

public class Texture2DArrayExample : MonoBehaviour
{
    public Texture2DArray source;
    public Texture2DArray destination;

    void Start()
    {
        // Get a copy of the color data from the source Texture2DArray, in high-precision float format.
        // Each element in the array represents the color data for an individual pixel.
        int sourceSlice = 0;
        int sourceMipLevel = 0;
        Color[] pixels = source.GetPixels(sourceSlice, sourceMipLevel);

        // If required, manipulate the pixels before applying them to the destination Texture2DArray.
        // This example code reverses the array, which rotates the image 180 degrees.
        System.Array.Reverse(pixels, 0, pixels.Length);

        // Set the pixels of the destination Texture2DArray.
        int destinationSlice = 0;
        int destinationMipLevel = 0;
        destination.SetPixels(pixels, destinationSlice, destinationMipLevel);

        // Apply changes to the destination Texture2DArray, which uploads its data to the GPU.
        destination.Apply();
    }
}
```

Additional Resources: [Texture2DArray.GetPixels32](/engine/6000.7/script-reference/unityengine/texture2darray/getpixels32.md), [Texture2DArray.GetPixelData](/engine/6000.7/script-reference/unityengine/texture2darray/getpixeldata.md), [Texture2DArray.SetPixels](/engine/6000.7/script-reference/unityengine/texture2darray/setpixels.md), [Graphics.CopyTexture](/engine/6000.7/script-reference/unityengine/graphics/copytexture.md).
