2016-11-08 4 views
0

Gibt es eine Möglichkeit, ein bearbeitetes Bild zu speichern, ohne dem Benutzer das NSSavePanel zu zeigen?Kakao sparen mit ImageKit ohne NSSavePanel

Das heißt, viele Anwendungen bieten dem Benutzer die Option "Speichern" oder "Speichern unter ..." wobei "Speichern" nur die Datei unter Beibehaltung des Dateinamens überschreibt und "Speichern unter ..." präsentiert das vollständige NSSavePanel mit allen Optionen.

Ich habe eine App, die ImageKit aufruft, um die Bearbeitung eines Bildes zu ermöglichen, und ich möchte dem Benutzer erlauben, auf eine Schaltfläche oder einen Tastaturbefehl zu klicken, um einfach zu speichern, ohne das Panel zu benötigen. Kein Dialog, keine Benachrichtigung, einfach auf Speichern klicken und die Bilddatei wird mit der neu bearbeiteten überschrieben.

Ich weiß, wie man eine Textdatei auf diese Weise speichert, aber ich bin mir nicht sicher über ein bearbeitetes Bild von einem IKImageView.

Vielen Dank im Voraus!

Antwort

0

So umgangen ich nur die NSSavePanel alle zusammen und ging direkt zu GCImageDest:

- (IBAction)saveWithNoPanel: (id)sender 
{ 
    _saveOptions = [[IKSaveOptions alloc] initWithImageProperties: _imageProperties 
                 imageUTType: _imageUTType]; 

    NSString * url=[[NSUserDefaults standardUserDefaults] objectForKey:@"photoPath"]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy"]; 
    NSString * yearString = [formatter stringFromDate:[NSDate date]]; 

    NSString * fileName = [[_imageWindow representedFilename] lastPathComponent]; 
    //NSLog(@"Filename: %@",fileName); 
    NSString * photoUrl =[NSString stringWithFormat:@"%@%@%@%@%@",url,@"/",yearString,@"/",fileName]; 
    //NSLog(@"photourl: %@",photoUrl); 

    NSString * newUTType = [_saveOptions imageUTType]; 
    CGImageRef image; 

    image = [_imageView image]; 

     if (image) 
     { 
      NSURL * url =[NSURL fileURLWithPath: photoUrl]; 
      //NSLog(@"URL: %@",url); 

      CGImageDestinationRef dest = CGImageDestinationCreateWithURL((CFURLRef)url, 
                     (CFStringRef)newUTType, 1, NULL); 

      if (dest) 
      { 
       CGImageDestinationAddImage(dest, image, 
              (CFDictionaryRef)[_saveOptions imageProperties]); 
       CGImageDestinationFinalize(dest); 
       CFRelease(dest); 
      } 
     } else 
     { 
      NSLog(@"*** saveImageToPath - no image"); 
     } 
    [pwPhotoPathTextField setStringValue:[NSString stringWithFormat:@"%@%@",photoUrl]]; 
    [_imageWindow orderOut:self]; 
    }