2017-03-08 2 views
0

Voici le code que j'utilise:Pourquoi TIFFRepresentation est-elle plus grande que le fichier image réel?

NSImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:@"test.jpg"]; 
NSData *originalData = [image TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:1.]; 

Le originalData.length me donne 1802224 octets (1.7MB). Alors que la taille de l'image sur le disque est de 457KB. Pourquoi est-ce que TIFFRepresentation est plus grande et quelle représentation je devrais utiliser pour obtenir l'image originale (je veux transférer l'image sur le réseau)?

Répondre

3

TIFF est beaucoup plus grand que JPEG. Pas de surprise là-bas.

Cependant, la réponse à votre question actuelle est: n'utilisez pas toute "représentation". Vous avez les données (à savoir, le fichier lui-même); envoie-le! Ne transformez pas le fichier image en un NSImage; Prenez-le comme un NSData.

+0

hm. Donc, fondamentalement, dans les scénarios où l'utilisateur fait glisser et dépose une image, je vais juste avoir besoin de transporter une référence supplémentaire à un fichier abandonné, à côté de l'image (qui est utilisée dans l'interface utilisateur). – peetonn

+1

Vous pouvez faire une représentation JPEG de l'image, mais cela semble plutôt inutile lorsque le fichier sur le disque est JPEG. – matt