J'utilise ce code dans mon application qui m'aidera à envoyer une image.
Cependant, j'ai une vue d'image avec une image. Je n'ai pas de fichier dans appbundle mais j'ai l'image de mon côté. Comment puis-je changer le code ci-dessous? Quelqu'un peut -il me dire comment puis - je convertir myimage
à NSData
?
// Attach an image to the email
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy"];
objective-c
ios
ipad
cocoa-touch
nsdata
Christina
la source
la source
Réponses:
Essayez l'une des solutions suivantes, en fonction de votre format d'image:
Voici les docs .
ÉDITER:
si vous souhaitez accéder aux octets bruts qui composent l'UIImage, vous pouvez utiliser cette approche:
Cela vous donnera la représentation de bas niveau des pixels RVB de l'image. (Omettez le
CFBridgingRelease
bit si vous n'utilisez pas ARC).la source
(id)CFBridgingRelease(CGDataProviderCopyData(provider))
pour prendre la propriété deCDataRef
retourné parCGDataProviderCopyData
dans ARC.data
serait suffisante ou s'il y aurait encore une fuite de mémoire.la source
Si vous avez une image dans une UIImageView, par exemple "myImageView", vous pouvez effectuer les opérations suivantes:
Convertissez votre image en utilisant UIImageJPEGRepresentation () ou UIImagePNGRepresentation () comme ceci:
Vous pouvez également placer ce code dans un bloc GCD et l'exécuter dans un autre thread, affichant un UIActivityIndicatorView pendant le processus ...
la source
Créez la référence de l'image ....
affichage de l'image dans la vue image ... imagedisplay est la référence de l'imageview:
convertissez-le en
NSData
en passant uneUIImage
référence et fournissez une qualité de compression en valeurs flottantes:la source
Solution dans Swift 4
la source
cgImage.dataProvider
données sont- elles encodées? Il semble être différent des données deUIImagePNGRepresentation
etUIImageJPEGRepresentation
parce qu'il ne peut pas être utilisé pour créer une image comme celle-ciUIImage(data: imageData)
.UIImageJPEGRepresentation
fournit. Mais je pense que cette solution préserve le format d'encodage d'origine dans lequel se trouvait l'image et ne la réencode pas.Utilisez le bloc if-let avec Data pour empêcher le blocage de l'application et l'exécution sûre du code, car la fonction UIImagePNGRepresentation renvoie une valeur facultative.
Opérations génériques sur les images (comme png et jpg les deux):
En utilisant l'extension:
la source
la source