Cocoa 使用 ImageKit 保存而不使用 NSSavePanel
Cocoa saving with ImageKit without NSSavePanel
那么有没有一种方法可以在不向用户显示 NSSavePanel 的情况下保存编辑后的图像?
也就是说,许多应用程序为用户提供 "Save" 或 "Save As..." 的选项,其中 "Save" 只是覆盖保留文件名的文件,而 "Save As..." 显示完整的文件具有所有选项的 NSSavePanel。
我有一个调用 ImageKit 以允许编辑图像的应用程序,我希望允许用户单击按钮或键盘命令来保存而不需要面板。没有对话,没有通知,只需点击保存,图像文件就会被新编辑的文件覆盖。
我知道如何以这种方式保存文本文件,但我不确定来自 IKImageView 的编辑图像。
提前致谢!
所以我直接绕过了 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];
}
那么有没有一种方法可以在不向用户显示 NSSavePanel 的情况下保存编辑后的图像?
也就是说,许多应用程序为用户提供 "Save" 或 "Save As..." 的选项,其中 "Save" 只是覆盖保留文件名的文件,而 "Save As..." 显示完整的文件具有所有选项的 NSSavePanel。
我有一个调用 ImageKit 以允许编辑图像的应用程序,我希望允许用户单击按钮或键盘命令来保存而不需要面板。没有对话,没有通知,只需点击保存,图像文件就会被新编辑的文件覆盖。
我知道如何以这种方式保存文本文件,但我不确定来自 IKImageView 的编辑图像。
提前致谢!
所以我直接绕过了 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];
}