# Images

The Image objects in our Python API are not real images (in bytes) but hold the reference attributes (ID, name, etc.) from images in **Data**Gym.ai. However, the Python API Client allows you to directly download these images from your **Data**Gym.ai Projects.

## Upload Images

**1. Choose the Dataset you want to upload images to**

```
dataset = client.get_dataset_by_name("Dataset_Name")
```

**2.1 Upload a local image to DataGym.ai**

```
uploaded_image = client.upload_image(dataset.id, "PATH_TO_LOCAL_IMAGE")
```

optionally you can manually set the image name

```
uploaded_image = client.upload_image(dataset.id, "PATH_TO_LOCAL_IMAGE", "name.jpg")
```

**2.2 Upload from image urls**

```
image_url_list = [image_url_1, image_url_2]

upload_results = client.create_images_from_urls(dataset.id, image_url_list)
```

## Download Images

### Select an image from your Project/Dataset

**1. Choose a Project (or Dataset)**

```
dummy_project = client.get_project_by_name("Dummy_Project")
```

**2. Choose an image**

We simple take the first image of our Dummy Project for this example

```python
dummy_images = dummy_project.get_images()

first_dummy_img = dummy_images[0] 
```

### Download the image data

#### Download as Bytes

You can download and store the selected image as byte stream via the `download_image_bytes` method of the API Client. The method requires the Image object you selected during the recent steps.

```python
img_data = client.download_image_bytes(image_id=first_dummy_img)
```

`download_image_bytes` returns the image as bytes in Python

**Use-Case:** Do you want to inspect the image you downloaded in your application? Let's use some additional packages to visualize our newly downloaded image

{% hint style="info" %}
Install [Pillow](https://pillow.readthedocs.io/en/stable/) - the Python Imaging Library - with pip to run this example
{% endhint %}

```python
from PIL import Image
import io

image = Image.open(io.BytesIO(image_data))
image.show()
```

This little script will view the Image on your machine.

#### Download image as file

You can also directly download an image to your machine. Therefore, execute the `download_image` method which requires the Image object you want to download and the destination on your machine.

```python
client.download_image(image=first_dummy_img, file_path="")
```

## Delete Images

To delete an image from your **Data**Gym.ai Dataset use the `delete_image` method of the Client class. The method only requires an Image Object.

```python
delete_success = client.delete_image(image=first_dummy_img)
```

`delete_image` returns `True` if the image was successfully deleted

{% hint style="danger" %}
Executing this method will permanently delete the Image from your **Data**Gym.ai Dataset
{% endhint %}

## The Image object

### Image Attributes

The Image object in the Python API is modeled after DataGym's Images.

{% code title=">>>> print(first\_dummy\_img)" %}

```python
<Image {
    'id': '<IMAGE_ID>', 
    'image_name': 'sattelite_01.jpg', 
    'image_type': 'SHAREABLE_LINK', 
    'timestamp': 1584711260832
}>
```

{% endcode %}
