# Picture Transfer Protocol

Picture Transfer Protocol (PTP) est un protocole développé par l'International Imaging Industry Association (en) pour permettre le transfert d'images depuis un appareil photo numérique sur un ordinateur. Ce protocole a été standardisé en tant que ISO 15740.
Il a été de plus standardisé pour l'USB par l'USB Implementers Forum en tant que still image capture device class (classe de dispositif de capture d'image fixe). USB PTP est une alternative à l'UMS (USB Mass Storage), pour les appareils photo. Certains appareils prennent les deux modes en charge

## Description

PTP spécifie une façon de créer, transférer et manipuler des objets qui sont typiquement des images photographiques, comme un fichier JPEG. Bien qu'il soit habituel de considérer ces objets comme des fichiers, ce sont en fait des entités abstraites identifiées uniquement par un object ID de 32 bits. Ces objets peuvent toutefois avoir des parents et des voisins, de sorte qu'une hiérarchie peut être créée comme sur un système de fichiers.

## Stockage

PTP ne spécifie pas comment les objets sont enregistrés – il s'agit seulement d'un protocole de communication. Il ne spécifie pas non plus la couche transport. Néanmoins, il a été conçu pour supporter les standards existants, tels que Exif, TIFF/EP, DCF, and DPOF, et a été mis en œuvre sur les couches de transport USB et FireWire.
Les photographies sur les APN sont généralement stockées sous forme de fichiers sur une mémoire de masse, comme une carte mémoire, formatée le plus souvent en FAT ou FAT 32, et qui peut être arrangée selon les spécifications Design rule for Camera File system (DCF). Néanmoins, rien de ceci n'est obligatoire, car PTP s'abstrait de ces couches de représentation.
Par opposition, si un APN utilise l'UMS, le système de fichiers et son arrangement sont exposés à l'utilisateur.

## Extensions

Plusieurs protocoles ont été développés pour accroître les possibilités de PTP :
* PTP/IP, développé par l'entreprise FotoNation et mis en œuvre pour la première fois sur des APN par Nikon, Canon et Kodak, permet l'utilisation de PTP sur tout réseau IP.
* Media Transfer Protocol, développé par Microsoft, permet de transférer d'autres média que les images, ainsi que d'associer aux objets des métadonnées (telles que titre ou artiste), tandis que dans le cas de PTP, les métadonnées sont contenues dans les champs EXIF des images pour le jpeg, ou dans des champs spécifiques au format pour les images en format brut (RAW, DCRAW, NEF…)

## Prise en charge par les systèmes d'exploitation

Microsoft et Apple ont tous deux inclus la prise en charge de PTP dans leurs systèmes d'exploitation, respectivement depuis Windows Me (à l'exception de Windows CE), et Mac OS X v10.1. Microsoft implémente PTP sous Windows via Windows Image Acquisition$^,$.
Sous Linux et d'autres systèmes d'exploitation libres, PTP est pris en charge par diverses bibliothèques, telles que libgphoto et libptp, bibliothèques utilisées par des applications telles que Digikam, GTKam, Entangle, Darktable, F-Spot et Shotwell.

## Version 1.1

PTP v1.1 (ISO15740:2008) est une mise à jour de PTP qui a été publiée en 2008 par l'ISO.
À mi-2008, la plupart des périphériques et système d'exploitation ne supportent pas encore la version 1.1 de PTP. Cette version est entièrement rétro-compatible avec la version précédente 1.0, et offre des améliorations de performance, de compatibilité et de fonctionnalité dont :
* Un mécanisme permettant de streamer le contenu.
* Un mécanisme de gestion de jeux d'extension multiples.
* Le support d'objets plus grands que la limite de 4 Gio de PTP v1.0, rendu possible par l'utilisation de 8 octets pour le codage de la taille.
* La possibilité de redimensionner à n'importe quelle taille les images avant transmission. Avec PTP v1.0, les images ne peuvent être transférées qu'en pleine résolution ou en vignette.

## Inconvénients

* Renommer des fichiers objets n'est pas possible sans copier le fichier ou le réécrire.
* La modification du contenu d'un fichier n'est pas possible (le fichier doit être re-transféré dans son intégralité).