Экономия какао с помощью ImageKit без NSSavePanel

Итак, есть ли способ сохранить отредактированное изображение, не предоставляя пользователю NSSavePanel?

То есть многие приложения предлагают пользователю вариант «Сохранить» или «Сохранить как…», где «Сохранить» просто перезаписывает файл, сохраняя имя файла, а «Сохранить как...» представляет полную панель NSSavePanel со всеми параметрами. .

У меня есть приложение, которое вызывает ImageKit, чтобы разрешить редактирование изображения, и я хотел бы, чтобы пользователь нажимал кнопку или ключевую команду, чтобы просто сохранить, не нуждаясь в панели. Никаких диалогов, никаких уведомлений, просто нажмите «Сохранить», и файл изображения будет перезаписан новым отредактированным.

Я знаю, как сохранить текстовый файл таким образом, но я не уверен в отредактированном изображении из IKImageView.

Заранее спасибо!


person julian    schedule 08.11.2016    source источник


Ответы (1)


Так что я просто обошел NSSavePanel целиком и сразу перешел к 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];
    }
person julian    schedule 08.11.2016