[Résolu] BeginImageContext sur Ipad
busterTheo
Membre
Bonjour,
comme je le disais dans un autre post, je suis parvenu grâce à Draken à faire ce que je voulais.
Le problème, et je m'excuse de revenir à la charge, est que ça déconne sur ipad.
En gros je prend un snapshot et j'enregistre l'image.
Ok sur le simulator, mais image (ce sont des vrais pixels) toute noire.
Si quelqu'un pouvait m'aider, ce serait super.
Merci d'avance.
func enregistrerInclinaison() {
let snapshotView:UIView = viewPorteuseOrientation.snapshotViewAfterScreenUpdates(true)
UIGraphicsBeginImageContextWithOptions(viewPorteuseOrientation.bounds.size, true, 0.0)
snapshotView.drawViewHierarchyInRect(viewPorteuseOrientation.bounds, afterScreenUpdates: true)
if let imageGet :UIImage = UIGraphicsGetImageFromCurrentImageContext() {
UIGraphicsEndImageContext()
let documentsDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask, true)[0] as! String
let pathFull: NSString = documentsDir + "/Inclinee" + imageTransmiseString
if let pngFullData: NSData = UIImagePNGRepresentation(imageGet) {
pngFullData.writeToFile(pathFull as String, atomically: true)
}
}
}
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Alors là , je vois que personne ne connait ce problème.
ça veut dire que le plan snapShot, c'est d'la daube ?
Ce qui ne répond pas à ta question, j'en conviens !
Je pense que le problème est que tu ne sais pas quel est le Graphics Context courant.
- UIGraphicsBeginImageContextWithOptions() crée le contexte, mais ne le rend pas courant d'après la doc.
- snapshotView.drawViewHierarchyInRect() change-t-elle le contexte courant?
- UIGraphicsGetImageFromCurrentImageContext() -> Le contexte courant n'est peut-être pas le contexte offscreen créé plus haut.
Merci pour votre retour.
Pas bète l'histoire du contexte pas courant, mais pourquoi ça marche sur le simulateur ?
Essaye:
Le problème vient peut-être de la sauvegarde de l'image sur le device. J'ai écrit un micro-exemple pour tester le snapshot entièrement en mémoire.
Il commence par afficher une image dans une UIImageView. Si l'utilisateur touche l'écran du doigt, l'application réalise un snapshot de la vue pour l'afficher dans une autre UIImageView.
Cela fonctionne sur :
- le simulateur
- mon iPhone 4 (iOS 7.1)
- mon iPod Touch 5G (iOS 8.1)
Désolé je n'ai pas d'iPad pour tester.
On a deux chats pour le prix d'un, l'original et sa copie.
Voilà un code qui fonctionne aussi sur l'iPad.
T'as raison pour le context, j'en suis certain, mais je comprend pas tout. Pas grave.
Merci beaucoup pour votre participation.
Je met résolu.