# GetPixels

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

## Definition

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

## GetPixels(int, int, int, int, int)

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

```csharp
public Color[] GetPixels(int x, int y, int blockWidth, int blockHeight, int miplevel)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The starting x position of the section to fetch.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The starting y position of the section to fetch.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The width of the section to fetch.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The height of the section to fetch.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The mipmap level to read from. The range is `0` through the texture's [Texture.mipmapCount](/engine/6000.6/script-reference/unityengine/texture/mipmapcount.md). The default value is `0`.

### Returns

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

### Remarks

This version of `GetPixels` returns part of a mipmap level instead of the whole mipmap level.

### Examples

```csharp
// Get a rectangular area of a texture and place it into
// a new texture the size of the rectangle.
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // Source texture and the rectangular area we want to extract.
    public Texture2D sourceTex;
    public Rect sourceRect;

    void Start()
    {
        int x = Mathf.FloorToInt(sourceRect.x);
        int y = Mathf.FloorToInt(sourceRect.y);
        int width = Mathf.FloorToInt(sourceRect.width);
        int height = Mathf.FloorToInt(sourceRect.height);

        Color[] pix = sourceTex.GetPixels(x, y, width, height);
        Texture2D destTex = new Texture2D(width, height);
        destTex.SetPixels(pix);
        destTex.Apply();

        // Set the current object's texture to show the
        // extracted rectangle.
        GetComponent<Renderer>().material.mainTexture = destTex;
    }
}
```

## GetPixels(int)

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

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

### Parameters

**** (\[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.6/script-reference/unityengine/texture/mipmapcount.md). The default value is `0`.

### Returns

| Type                                                              | Description                              |
| ----------------------------------------------------------------- | ---------------------------------------- |
| [Color\[\]](/engine/6000.6/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.6/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.6/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.6/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 [Texture2D.GetPixelData](/engine/6000.6/script-reference/unityengine/texture2d/getpixeldata.md) instead.

A single call to `GetPixels` is usually faster than multiple calls to [Texture2D.GetPixel](/engine/6000.6/script-reference/unityengine/texture2d/getpixel.md), especially for large textures.

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

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

```csharp
using UnityEngine;

public class Texture2DExample : MonoBehaviour
{
    public Texture2D source;
    public Texture2D destination;

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

        // If required, manipulate the pixels before applying them to the destination Texture2D.
        // 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 Texture2D.
        int destinationMipLevel = 0;
        destination.SetPixels(pixels, destinationMipLevel);

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

Additional Resources: [Texture2D.SetPixels](/engine/6000.6/script-reference/unityengine/texture2d/setpixels.md), [mipmapCount](/engine/6000.6/script-reference/unityengine/texture/mipmapcount.md), [Texture2D.GetPixelData](/engine/6000.6/script-reference/unityengine/texture2d/getpixeldata.md), [Texture2D.GetPixels32](/engine/6000.6/script-reference/unityengine/texture2d/getpixels32.md).
