De NSView à  JPEG

HerveHerve Membre
09:09 modifié dans API AppKit #1
Bonjour,

J'essaie de sortir des jpeg de mes NSView.

Ce code ne plante pas mais ne marche pas :
<br />- (IBAction) exporteJPEG : (id) sender{<br />&nbsp; &nbsp;  NSSavePanel * savePanel = [NSSavePanel savePanel];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; NSString * fileName = [savePanel filename];<br />&nbsp; &nbsp; [savePanel setCanCreateDirectories:YES];<br />	[savePanel setRequiredFileType:@&quot;jpg&quot;];<br />	[savePanel setExtensionHidden:YES];<br />	int runResult = [savePanel runModal];<br />	if (runResult == NSOKButton){<br />&nbsp; &nbsp; &nbsp; &nbsp; NSBitmapImageRep *image;<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; image = [[NSBitmapImageRep alloc]initWithFocusedViewRect:[leDessin bounds]];<br />&nbsp; &nbsp; &nbsp; &nbsp; if (image){<br />&nbsp; &nbsp; &nbsp; &nbsp; [[image representationUsingType: NSJPEGFileType properties:[NSDictionary dictionaryWithContentsOfFile:@&quot;NSImageCompressionMethod&quot;]]<br />&nbsp; &nbsp; &nbsp; &nbsp;  writeToFile:fileName&nbsp; atomically:NO];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSLog(@&quot;image archivée&quot;);<br />&nbsp; &nbsp; &nbsp; &nbsp; } <br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; else{<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [[NSAlert alertWithMessageText:NSLocalizedString(@&quot;PASJPEG&quot;, @&quot;&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  defaultButton:@&quot;OK&quot; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  alternateButton:nil<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  otherButton:nil<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  informativeTextWithFormat:@&quot;&quot;] runModal];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; }<br />}<br />


"Image archivée" apparaà®t bien dans la console, mais l'image n'est pas sur le disque dur. J'ai vu une doc Apple sur un autre type d'images, mais cela n'a pas l'air si simple en fait...

Quelqu'un dans ce forum aurait une idée peut-être?  Merci.

Réponses

  • AliGatorAliGator Membre, Modérateur
    mai 2011 modifié #2
    [tt]dictionaryWithContentsOfFile:@NSImageCompressionMethod[/tt] ??? T'as un fichier qui s'appelle NSImageCompressionMethod, hop, comme ça sans rien ? Et en plus tu files juste un nom de fichier, espérant qu'il va le trouver par magie si tu lui indiques pas le chemin ? Je connais pas la méthode [tt]representationUsingType:properties:[/tt] mais je doute qu'en lui passant un truc comme ça ça aide !

    Et sinon [tt]writeToFile:atomically[/tt] retourne un booléen que tu ferais bien de lire pour savoir si le fichier a été créé ou pas. Parce que là  ton NSLog va s'afficher que l'écriture ait réussi ou pas (et c'est manifestement le cas "ou pas" qui t'arrive). Voire utiliser la méthode alternative qui prend un NSError** en paramètre (je suis sûr que ça doit bien exister pour ce genre de cas, vérifier dans la doc) pour permettre de récupérer un NSError qui décrira mieux l'erreur si ça se passe pas bien.

    Et puis sinon, bah comme toujours, les bases de la base du débug. Mettre des breakpoints, mettre des NSLog, regarder ce que vaut le résultat de chaque élément comme en particulier ton [tt]representationUsingType:properties:[/tt] (je parie qu'il est nil, tiens). Bref, les classiques du débogage pour regarder pas à  pas où ça coince exactement, sur quel objet, etc.
  • HerveHerve Membre
    09:09 modifié #3
    Merci AliGator,

    J'ai fini par renoncer. Mon soft propose déjà  la possibilité d'imprimer la View en question. Après on est sur Mac, on peut sortir un pdf, voire depuis l'onglet "Aperçu" tout ce qu'on veut. Je me fatigue pour rien...

    Merci tout de même.
Connectez-vous ou Inscrivez-vous pour répondre.