Reputation: 609
my first question here.
I am trying to create a simple application which takes in a picture from one location, and places it to the desktop. The problem I'm having is this error:
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
On this line:
CGImageRef imageItself = CGImageSourceCreateImageAtIndex(myImageSource, 0, NULL);
And here's the actual code:
Header file:
#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 file:
#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
Upvotes: 2
Views: 476
Reputation: 609
OP here.
I managed to fix it. I made it a bit more abstract, and lengthened out every method as much as I could so I could see it step by step. Thought I'd post up my fix for anyone else who stumbles upon my question.
Here is the end code for the move file section in .m:
- (IBAction)moveFile:(id)sender {
if (topButtonClicked == YES) {
//Take in picture
CFURLRef CFURLReftheDoc = (__bridge CFURLRef)theDoc;
CGImageSourceRef myImageSource = CGImageSourceCreateWithURL(CFURLReftheDoc, 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);
//Save picture to desktop
//Store desktop directory.
NSString *path = [@"~/Desktop/public.png" stringByExpandingTildeInPath];
NSURL *NSURLdesktopURL = [[NSURL alloc] initFileURLWithPath:path];
NSLog(@"%@",NSURLdesktopURL);
//store where I want to save, the type of file I expect to save, number of images to save, any additional options.
CGImageDestinationRef whereToSave = CGImageDestinationCreateWithURL((__bridge CFURLRef)NSURLdesktopURL, kUTTypeJPEG, 1, NULL);
// NSLog(@"%@",whereToSave);
//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];
}
}
@end
Upvotes: 2