Je peux créer UIImage
à l' NSData
aide de méthodes [UIImage imageWithData:]
ou [UIImage initWithData:]
.
Je me demande si je peux récupérer le NSData
dos d'un existant UIImage
? Quelque chose sur la ligne deNSData *myData = [myImage getData];
cocoa-touch
uiimage
nsdata
Eugène
la source
la source
UIImageJPEGRepresentation
ouUIImagePNGRepresentation
va modifier les données et faire un reconversions. Existe-t-il un moyen de vraiment réaliser ce qui a été demandé?Lors de l'initialisation d'un
UIImage
objet avecinit(data: originalData)
, celaoriginalData
sera converti en données brutes dans une sorte de format interne. Ces données peuvent être récupérées ultérieurement avecCependant, comme il
rawData
est brut, il sera encore plus gros que lors de l'utilisationUIImagePNGRepresentation
.la source
Vous pouvez vous attendre à ce qu'une UIImage soit un objet formaté pour l'affichage et n'utilisera donc pas les données d'origine (qui sont probablement au format PNG ou JPEG) mais plus probablement un tableau de pixels ou un autre format interne. En d'autres termes,
UIImage(data: foo)
ne retiendra pasfoo
.Si vous souhaitez simplement l'utiliser ailleurs dans votre programme, l'UIImage d'origine fera l'affaire (je suppose que ce n'est pas le cas ici)
Si vous souhaitez sérialiser,
UIImagePNGRepresentation(...)
fonctionnera mais sera surdimensionné si l'original était un JPEG;UIImageJPEGRepresentation(...)
entraînera souvent des données légèrement surdimensionnées et est légèrement avec perte si votre original était PNG. Vous devriez en choisir un en fonction de la façon dont l'image sera affichée et du format que vous prévoyez de fournir. Si vous utilisez PNG et que vous voulez que PNG sort, vous devriez obtenir une bonne taille de fichier et des données presque identiques, à part les morceaux PNG spéciaux.Si vous souhaitez obtenir une copie exacte des données d'origine (peut-être pour enregistrer un fichier après la vignette ou pour le SHA1), vous devez le conserver séparément. Vous pourriez faire quelque chose comme:
la source
Juste parce que je suis tombé dessus et que j'aime Swift :)
Voici la traduction rapide du message de Caroiline.
Ou
la source
Swift 4.2
la source
Les choses ont changé depuis que la réponse ci-dessus a été donnée, pour ceux qui cherchent toujours parce qu'ils partagent la préoccupation de CipherCom: iOS 5 a ajouté la propriété CIImage .
la source
CIImage
n'est définie que si elle a été initialisée avecimageWithCIImage:
. De plus, ce ne sont pas directement les données utilisées mais plutôt un autre objet de représentation d'image.