# DownloadHandlerTexture

> A DownloadHandler subclass specialized for downloading images for use as Texture objects.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.Networking](/engine/6000.7/script-reference/unityengine/networking.md)
* **Assembly:** UnityEngine.UnityWebRequestTextureModule
* **Inherits from:** [DownloadHandler](/engine/6000.7/script-reference/unityengine/networking/downloadhandler.md)
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public sealed class DownloadHandlerTexture : DownloadHandler, IDisposable
```

## Remarks

`DownloadHandlerTexture` stores received data in a pre-allocated Unity [Texture](/engine/6000.7/script-reference/unityengine/texture.md) object. It's optimized for downloading images from web servers, and performs image decompression and decoding on a worker thread.

This download handler stores received data in a buffer and on download completion decodes the data into valid Unity [Texture](/engine/6000.7/script-reference/unityengine/texture.md) objects. If the texture is destroyed, it can be created again by the same `DownloadHandlerTexture` object.

The handler performs buffering, decompression and texture creation in native code. Additionally, decompression and texture creation are performed on a worker thread instead of the main thread, which can improve frame time when loading large textures.

`DownloadHandlerTexture` only allocates managed memory when finally creating the Texture itself, which eliminates the garbage collection overhead associated with performing the byte-to-texture conversion in script.

For use cases where you wish to download an image via HTTP and use it as a Texture within Unity, usage of this class is strongly recommended.

## Examples

```csharp
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;

[RequireComponent(typeof(Image))]
public class ImageDownloader : MonoBehaviour {
    Image _img;

    void Start () {
        _img = GetComponent<UnityEngine.UI.Image>();
        Download("https://www.mysite.com/myimage.png");
    }

    public void Download(string url) {
        StartCoroutine(LoadFromWeb(url));
    }

    IEnumerator LoadFromWeb(string url)
    {
        UnityWebRequest wr = new UnityWebRequest(url);
        DownloadHandlerTexture texDl = new DownloadHandlerTexture(true);
        wr.downloadHandler = texDl;
        yield return wr.SendWebRequest();
        if (wr.result == UnityWebRequest.Result.Success) {
            Texture2D t = texDl.texture;
            Sprite s = Sprite.Create(t, new Rect(0, 0, t.width, t.height),
                Vector2.zero, 1f);
            _img.sprite = s;
        }
    }
}
```

## Constructors

| Constructor                                                                                                                                                                                                       | Description                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| [DownloadHandlerTexture()](/engine/6000.7/script-reference/unityengine/networking/downloadhandlertexture/ctor.md#downloadhandlertexture\(\))                                                                      | Default constructor.                                                                                                              |
| [DownloadHandlerTexture(System.Boolean)](/engine/6000.7/script-reference/unityengine/networking/downloadhandlertexture/ctor.md#downloadhandlertexture\(bool\))                                                    | Constructor, allows [\_isReadable](/engine/6000.7/script-reference/unityeditor/textureimporter/isreadable.md) property to be set. |
| [DownloadHandlerTexture(UnityEngine.Networking.DownloadedTextureParams)](/engine/6000.7/script-reference/unityengine/networking/downloadhandlertexture/ctor.md#downloadhandlertexture\(downloadedtextureparams\)) | Constructor that allows you to specify the full set of supported properties when creating a texture from a downloaded image.      |

## Properties

| Property                                                                                            | Description                                                                                                      |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| [texture](/engine/6000.7/script-reference/unityengine/networking/downloadhandlertexture/texture.md) | Returns the downloaded [Texture](/engine/6000.7/script-reference/unityengine/texture.md), or `null`. (Read Only) |

## Static Methods

| Method                                                                                                    | Description                                                                                          |
| --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [GetContent](/engine/6000.7/script-reference/unityengine/networking/downloadhandlertexture/getcontent.md) | Returns the downloaded [Texture](/engine/6000.7/script-reference/unityengine/texture.md), or `null`. |

## Inheritance

**Inherited Members:**

* [DownloadHandler.Dispose()](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/dispose.md)
* [DownloadHandler.isDone](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/isdone.md)
* [DownloadHandler.error](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/error.md)
* [DownloadHandler.nativeData](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/nativedata.md)
* [DownloadHandler.data](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/data.md)
* [DownloadHandler.text](/engine/6000.7/script-reference/unityengine/networking/downloadhandler/text.md)
