Problème de téléchargement d'image (UIImageJPEGRepresentation vs UIImagePNGRepresentation)

StackOverflow https://stackoverflow.com/questions/495096

  •  20-08-2019
  •  | 
  •  

Question

J'ai stocké quelques images à l'aide de " Hold + Save Image " de Safari. option à ma bibliothèque de photos dans le simulateur. Lorsque je choisis une image dans la bibliothèque, je dois la convertir au format JPEG ou PNG afin de pouvoir la télécharger sur le serveur. Le problème est que la taille de l'image d'origine est d'environ 200 Ko, mais que l'image convertie au format PNG est d'environ 2 Mo après conversion. J'utilise UIImagePNGRepresentation pour convertir UIImage l'objet en NSData, puis publier l'image.

  1. Qu'est-ce qui me manque ici? Pourquoi la taille de l'image est-elle plus grande que sa taille d'origine? Comment puis-je empêcher cela?

  2. Quelle est la différence entre UIImageJPEGRepresentation et <=>? Lequel devrait être utilisé (recommandé)?

  3. Puis-je déterminer le type d'image chargé à partir de la photothèque?

  4. Quel est le type d'images par défaut capturées par l'appareil photo de l'iPhone?

Était-ce utile?

La solution

Je suppose que l'image d'origine est stockée au format JPEG.

Le format PNG est conçu pour stocker des éléments tels que des captures d’écran et des dessins au trait. Il n'est pas conçu pour stocker des éléments tels que des photos.

Tout dépend du type de compression utilisé. PNG utilise une compression sans perte pour que l'image soit exactement la même que l'image d'origine. JPEG utilise une compression avec perte, l’image résultante est une approximation de l’original.

Si vous prenez un fichier JPEG avec perte puis enregistrez-le au format PNG, sa taille augmentera, souvent beaucoup, comme vous l'avez vu.

La solution à votre problème consiste à ne rien modifier à vos images avant de les télécharger. Ce seront déjà des images PNG, GIF ou JPEG. C’est ce que vous devez télécharger.

Le format des images enregistrées par l'appareil photo de l'iPhone est JPEG.

Il semblerait que vous deviez vous renseigner sur PNG et JPEG en général.

Autres conseils

En ce qui concerne votre troisième point, vous pouvez déterminer le type d'image chargé à partir de la bibliothèque dans votre méthode de délégation du sélecteur d'images, comme suit:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info {

    // Get the image reference URL
    NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];

    // The path extension contains the image type: JPG, PNG, GIF, etc.
    NSString *originalImageType = referenceURL.pathExtension; 

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top