# Export textures

> Learn how to export textures from 3D assets using the Pixyz SDK.

Using Pixyz, it is possible to define if textures should be exported as PNG or JPEG files, with a parameterization of image *quality* for JPEG, and image *compression* for PNG.

Indeed, data preparation is not only about mesh optimization. Texture maps (whether they were imported in Pixyz or generated through a baking process) can also be optimized in order to be lighter, while having a control over their quality.

Almost all [export formats handled by Pixyz](./supported-formats) support the export of textures, whether they are embedded or as separate files: FBX, glTF, OBJ, USDZ, etc.

> **Note:**
>
> Not all textures will be exported as the output format may not support all map types (or none at all), like Normal maps, Opacity maps, [NPOT](https://docs.unity3d.com/Manual/ImportingTextures.html "target=\"_blank\"") maps…

## Supported image formats

### Import

| Name                      | Extensions      |
| ------------------------- | --------------- |
| Windows bitmap            | .bmp            |
| Portable image formats    | .pbm .pgm .ppm  |
| Sun raster                | .sr .ras        |
| JPEG                      | .jpeg .jpg .jpe |
| JPEG 2000                 | .jp2            |
| Portable network graphics | .png            |
| TIFF                      | .tiff .tif      |
| HDR                       | .hdr            |
| KTX2                      | .ktx2           |

### Export

| Name                      | Extensions      |
| ------------------------- | --------------- |
| JPEG                      | .jpeg .jpg .jpe |
| Portable network graphics | .png            |
| KTX2                      | .ktx2           |

## Embedded vs. non-embedded textures

When exporting a 3D model that uses textures, depending on the format used to export, textures can be embedded within the file, or saved separately:

* Embedded: .fbx, .glb, .usdz, .jt, .3dxml
* Separate files: FBX, .gltf, obj, .usda, .usdc, .vrml

The FBX format has an export parameter **Fbx Embedded Textures** to define whether textures should be exported as embedded within the FBX file (default), or separately. See [preferences](./../preferences).

## Learn more

### JPEG Quality parameter

Defines the Quality of the textures saved as JPEG files. Choose between 0 and 100 (the higher is the better), 95 being the default value

### PNG Compression parameter

Defines the level of compression for textures saved as PNG files, from 0 to 9. A higher value means a smaller size and longer compression time

> **Note:**
>
> The JPEG format is lossy by definition, even if the quality level is set to 100. With the PNG format, even with the highest compression level the image is saved/loaded lossless. However, the saving/loading time increases with higher compression. The compression level is a trade-off between file size and encoding/decoding speed

### Scripting

These preferences can be set in a script using the following commands:

```python title="Python"
pxz.core.setModuleProperty("Material", "ExportTextureFormat", "JPEG")
pxz.core.setModuleProperty("Material", "JpegQuality", "[95, 0, 100]")
pxz.core.setModuleProperty("Material", "PngCompression", "[1, 0, 9]")
```

```csharp title="C#"
pxz.Core.SetModuleProperty("Material", "ExportTextureFormat", "JPEG");
pxz.Core.SetModuleProperty("Material", "JpegQuality", "[95, 0, 100]");
pxz.Core.SetModuleProperty("Material", "PngCompression", "[1, 0, 9]");
```
