Encore une approche garantie pour travailler en utilisant SWIFT :
J'ai un "puits à images" où l'utilisateur peut déposer n'importe quelle image. Et ce "puits à images" possède une propriété d'image (de type NSImage) à laquelle on accède via un outlet :
@IBOutlet weak var imageWell: NSImageView!
Et le code qui sauvegarde cette image (vous pouvez le mettre dans l'action du bouton) est :
if imageWell.image != nil {
let bMImg = NSBitmapImageRep(data: (imageWell?.image?.TIFFRepresentation)!)
let dataToSave = bMImg?.representationUsingType(NSBitmapImageFileType.NSJPEGFileType, properties: [NSImageCompressionFactor : 1])
dataToSave?.writeToFile("/users/user/desktop/image.jpg", atomically: true)
}
Dans la première ligne du code donné, nous vérifions si notre puits d'image a une image.
Dans la deuxième ligne, nous faisons une représentation bitmap de cette image.
À la troisième ligne, nous convertissons notre BitmapRepresentation en un type JPG avec un facteur de compression fixé à "1" (pas de compression).
Dans la 4ème ligne, nous sauvegardons les données JPG avec un chemin donné. "atomiquement : true" signifie que le fichier est sauvegardé en un seul morceau et cela nous assure que l'opération sera réussie.
N.B. : Vous pouvez utiliser un autre NSBitmapImageFileType à la troisième ligne, pour enregistrer votre image dans un autre format. Il y en a beaucoup :
NSBitmapImageFileType.NSBMPFileType
NSBitmapImageFileType.NSGIFFileType
NSBitmapImageFileType.NSPNGFileType
etc.
4 votes
J'ai ajouté une prime puisque quelqu'un a appelé la première option un hack laid et je ne peux pas sembler trouver facilement une réponse apparemment correcte et définitive sur google, plus de vote/réponses s'il vous plaît.