# Formats de fichier

Quels formats pxstud.io ouvre et exporte, et ce que chacun conserve.

Ouvre des fichiers avec Fichier > Ouvrir... (ou dépose-les sur l'éditeur) et exporte avec
Fichier > Exporter.... La façon d'utiliser chaque option est décrite dans
[Ouvrir, importer et exporter](https://pxstud.io/fr/docs/manual/guides/import-export.md).

| Format | Ouvre | Exporte | Animation | Calques |
| - | - | - | - | - |
| **pxstud.io** (`.pxstudio`) | oui | avec Fichier > Enregistrer sous... | oui | tout est conservé |
| **Aseprite** (`.aseprite`, `.ase`) | oui | oui | oui | calques, groupes, cels liés, étiquettes, slices, tilemaps et la palette |
| **PNG** | une image | une image, ou une par image d'animation | sous forme de fichiers séparés | aplati |
| **APNG** (PNG animé, `.png` ou `.apng`) | oui, avec la durée de chaque image | animé | oui | aplati |
| **GIF** | oui, avec la durée de chaque image | animé | oui | aplati |
| **WebP** | fixe ou animé | fixe ou animé | oui | aplati |
| **JPEG** | oui (sans transparence) | une image par image d'animation | non | aplati |
| **AVIF** | une image | une image par image d'animation (sans perte par défaut) | non | aplati |
| **BMP**, **TGA**, **PCX** | une image | une image par image d'animation | non | aplati |
| **QOI** | une image | une image par image d'animation | non | aplati |
| **ICO** (icône Windows) | la plus grande image du fichier | une icône par image d'animation, jusqu'à 256×256, avec en option chaque taille supérieure multiple entier | non | aplati |
| **CUR** (curseur Windows) | la plus grande image, avec son point de clic | comme ICO, avec le point de clic | non | aplati |
| **Netpbm** (`.pbm`, `.pgm`, `.ppm`, `.pnm`, `.pam`) | une image | une image par image d'animation (`.pgm`, `.ppm`, ou `.pam` avec transparence) | non | aplati |
| **Photoshop** (`.psd`, `.psb`) | oui | l'image active | non | calques, groupes, modes de fusion, opacité, visibilité, écrêtage |
| **OpenRaster** (`.ora`) | oui | l'image active | non | calques, groupes, modes de fusion, opacité, visibilité |
| **Piskel** (`.piskel`) | oui | oui | oui | calques (groupes aplatis à l'export) |
| **Pixilart** (`.pixil`) | oui | non | oui | calques |
| **Pixelorama** (`.pxo`, version 1.0 et ultérieures) | oui | non | oui, avec étiquettes | calques, groupes, tilemaps, cels liés |
| **Pyxel Edit** (`.pyxel`) | oui | non | les animations deviennent des images et des étiquettes | calques |
| **FLI/FLC** (Autodesk Animator) | oui | oui | oui | aplati, jusqu'à 256 couleurs |
| **SVG** | via Importer en pixel art | une image par image d'animation | non | aplati |
| **Vidéo MP4** | non | là où le navigateur sait produire de la vidéo | oui | aplati |
| **Feuille de sprites** (PNG + JSON) | avec Fichier > Importer > Feuille de sprites... | oui | les images dans une seule image | peut répartir les calques et les étiquettes en rangées |
| **Godot 4 SpriteFrames** (PNG + `.tres`) | non | oui, comme fichier de données d'une feuille de sprites | une animation par étiquette | peut répartir les calques |
| **Tilemap** (Tiled `.tmj`/`.tsj`, JSON) | non | oui | JSON : chaque image ; Tiled : une image | calques de tilemap uniquement |
| **Palettes** (`.gpl`, `.pal`, `.hex`, `.act`, `.aco`, `.ase`, …) | dans la [Bibliothèque de palettes](https://pxstud.io/fr/docs/manual/guides/color.md#the-palette-library) | dans la Bibliothèque de palettes | | |

**Limites de taille.** Les formats animés et les fichiers Aseprite s'ouvrent jusqu'à 4096 pixels de
côté.

**Ouvrir des images.** Une image s'ouvre comme un sprite à un seul calque. Les images indexées (GIF,
FLC, PNG 8 bits, BMP, TGA, PCX, ICO, fichiers Photoshop indexés) s'ouvrent comme des sprites indexés
avec leur palette (y compris les couleurs partiellement transparentes d'un PNG 8 bits) ; les images en
niveaux de gris (PGM, PBM, PNG gris, fichiers Photoshop gris) s'ouvrent comme des sprites en niveaux de
gris ; un GIF dont les images ont des palettes différentes garde une palette par image. Un PNG animé
(un APNG) s'ouvre avec toutes ses images et leurs durées, qu'il s'appelle `.png` ou `.apng`.

**Fichiers d'autres éditeurs.** Les fichiers Photoshop, OpenRaster (Krita, GIMP, MyPaint), Piskel,
Pixilart, Pixelorama et Pyxel Edit s'ouvrent avec leurs calques. Tout ce qui ne passe pas est listé dans
un avis :

- Un mode de fusion que pxstud.io n'a pas devient Normal.
- Les groupes Pass Through de Photoshop s'ouvrent comme des groupes en transmission et ses autres
  groupes comme des groupes isolés, et s'exportent de la même façon. Un groupe Pass Through en dessous de
  100 % d'opacité ne peut être dessiné qu'isolé : quand un calque à l'intérieur utilise un autre mode de
  fusion, l'avis indique que le rendu peut différer.
- Les groupes OpenRaster conservent leur isolation (`isolation="isolate"` est un groupe isolé). Dans
  Pixelorama, un groupe réglé sur Pass Through s'ouvre en transmission et tout autre groupe isolé.
- Les masques de calque de Photoshop sont appliqués aux pixels du calque. Les calques de réglage, le
  texte et les effets arrivent sous forme de pixels, ou pas du tout.
- Les calques de tilemap de Pixelorama s'ouvrent comme des calques de tilemap : les calques qui
  partagent un tileset le partagent toujours, et les tuiles retournées et transposées gardent leur
  transformation. Un tilemap à tuiles isométriques, hexagonales ou à demi-décalage, ou que la grille de
  tuiles carrées ne peut pas contenir, s'ouvre comme un calque ordinaire de ses pixels. Un projet
  Pixelorama indexé s'ouvre comme un sprite indexé, avec les couleurs de sa palette dans les mêmes
  emplacements ; si les indices et les couleurs du fichier ne concordent pas, il s'ouvre en RGBA. Les
  cels liés restent liés, et les guides et les données utilisateur (notes de projet, de calque, de cel,
  d'étiquette et de tuile, couleurs de calque et de cel) suivent.
- Les effets de calque, les calques 3D et audio et les données utilisateur d'image de Pixelorama sont
  ignorés (l'avis nomme les calques). Les fichiers antérieurs à Pixelorama 1.0 doivent être
  réenregistrés dans une version plus récente de Pixelorama.
- Un fichier Pyxel Edit avec des animations s'ouvre à la taille d'une tuile, avec une image par cellule
  d'animation et une étiquette par animation ; le reste du canevas n'est pas conservé.
- Piskel garde une seule cadence pour tout le fichier, donc à l'export il utilise la durée d'image la
  plus courante. Son export omet aussi les calques masqués et n'a ni groupes ni modes de fusion.

**Icônes et curseurs.** Un fichier ICO ou CUR contient une image par taille ; pxstud.io ouvre la plus
grande. Le point de clic d'un curseur (son hotspot) arrive sous forme d'un slice nommé `Hotspot` dont le
pivot est sur ce pixel. Exporter un curseur utilise le pivot d'un slice nommé `hotspot`, ou le pixel en
haut à gauche s'il n'y en a pas.

**Durées FLC.** Les lecteurs FLC affichent chaque image pendant la même durée, donc l'export FLC de
pxstud.io répète une image autant de fois que sa durée l'exige (comme le fait Aseprite), et ouvrir un
FLC regroupe les images répétées en une seule. Deux images voisines qui se ressemblent deviennent dans
tous les cas une seule image.

**APNG ou GIF ?** Un PNG animé garde toutes les couleurs, la transparence douce et les durées d'image
exactes, et se lit dans tous les navigateurs actuels. Le GIF a au plus 256 couleurs, uniquement des
pixels totalement transparents ou totalement pleins, et des durées par pas de 10 ms, mais presque tout
peut l'afficher. Les applications sans prise en charge de l'APNG montrent la première image d'un PNG
animé.

**Les fichiers Aseprite** conservent presque tout. À l'ouverture de l'un d'eux, un avis liste ce qui n'a
pas pu être conservé : un profil colorimétrique intégré (pxstud.io travaille en sRGB), un mode de fusion
que pxstud.io n'a pas (réglé sur Normal), un calque de tilemap qui n'est pas sur sa grille de tuiles
(ouvert comme calque d'image), un calque de référence qui montre des images différentes selon les images
d'animation (la première est conservée), ou un cel endommagé ou un type de calque inconnu (omis, comme le
fait Aseprite, tandis que le reste du fichier s'ouvre).

Aseprite n'a pas de masques d'écrêtage. pxstud.io enregistre le masque d'écrêtage d'un calque dans le
fichier `.aseprite` sous forme de propriété sous son propre nom d'extension `pxstudio`, qu'Aseprite
conserve mais ignore. Le calque se dessine sans écrêtage dans Aseprite et est de nouveau écrêté quand le
fichier est rouvert dans pxstud.io.

Aseprite isole soit tous les groupes, soit aucun : les groupes sont en transmission sauf si **Compose
groups separately** (dans ses préférences Experimental) est activé. Quand un sprite a un groupe isolé, le
fichier `.aseprite` de pxstud.io demande des groupes composés (et conserve l'opacité et les modes de
fusion des groupes), et marque chaque groupe non isolé avec `isolated: false` sous le nom d'extension
`pxstudio`. Aseprite dessine alors ces groupes isolés eux aussi quand cette option est activée, tandis
que pxstud.io les rouvre en transmission. Un fichier avec des groupes composés venant d'Aseprite s'ouvre
avec tous les groupes isolés.
