我的第一个问题在这里。
我正在尝试创建一个简单的应用程序,它从一个位置获取图片并将其放置到桌面上。我遇到的问题是这个错误:
2012-10-27 10:49:16.405 saveFile[3271:303] +[__NSCFConstantString scheme]: unrecognized selector sent to class 0x7fff73c01e38
2012-10-27 10:49:16.406 saveFile[3271:303] +[__NSCFConstantString scheme]: unrecognized selector sent to class 0x7fff73c01e38
在这条线上:
CGImageRef imageItself = CGImageSourceCreateImageAtIndex(myImageSource, 0, NULL);
这是实际的代码:
头文件:
#import <Cocoa/Cocoa.h>
//NSOpenPanel = use finder
NSOpenPanel *openPanel;
//URL is the directory
NSURL* theDoc;
//Don't allow bottom button to malfunction by being clicked early.
bool topButtonClicked = NO;
@interface saveFileAppDelegate : NSObject <NSApplicationDelegate>
- (IBAction)moveFile:(id)sender;
- (IBAction)chooseFile:(id)sender;
@property (nonatomic, retain) IBOutlet NSTextField *label;
@property (assign) IBOutlet NSWindow *window;
@end
.m 文件:
#import "saveFileAppDelegate.h"
@implementation saveFileAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (IBAction)chooseFile:(id)sender {
openPanel = [NSOpenPanel openPanel];
[openPanel beginWithCompletionHandler:^(NSInteger result){
if (result == NSFileHandlingPanelOKButton) {
theDoc = [[openPanel URLs] objectAtIndex:0];
[_label setStringValue:[NSString stringWithFormat:@"%@",theDoc]];
// Open the document.
topButtonClicked = YES;
}
}
];
}
- (IBAction)moveFile:(id)sender {
if (topButtonClicked == YES) {
//Take in picture
CGImageSourceRef myImageSource = CGImageSourceCreateWithURL((__bridge CFURLRef)(theDoc), NULL);
//CGImageRef myImage = CGImageSourceCreateImageAtIndex(myImageSource,0,NULL);
//Save picture to desktop
//Save where I wish to save the file
CFURLRef desktopURL = (CFURLRef)@"/Users/Ken/Desktop/";
//Save where I want to save, the type of file I expect to save, number of images to save, any additional options.
CGImageDestinationRef whereToSave = CGImageDestinationCreateWithURL(desktopURL, kUTTypeJPEG, 1, NULL);
//Create a reference to the image itself, take in the image read, which image (only one, so 0), and additional options.
CGImageRef imageItself = CGImageSourceCreateImageAtIndex(myImageSource, 0, NULL);
//Begin final preperations, pull altogether desktop URL, the image read in before, and additional options.
CGImageDestinationAddImage (whereToSave, imageItself, NULL);
//Finalize (write the file)
CGImageDestinationFinalize(whereToSave);
//CGImageDestinationRef saveImageToDesktop (CFURLRef desktop, CFStringRef jpeg, size_t count, CFDictionaryRef NULL);
}
else{
/* open an alert with an OK button */
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Stop it."];
[alert runModal];
}
}
void CGImageDestinationAddImage (CGImageDestinationRef idst, CGImageRef image, CFDictionaryRef properties);
@end