Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

converting / reading input arguments as utf8



Hi all,

i'm quite new to cocoa programming,
and i have a question on the use of utf8 input arguments

Below you'll find some code that creates a thumbnail
per page for a given input file to a given output location

this workes fine as long as the input given does simple ascii characters

once i try using utf8 characters my input gets transferred incorrectly,
and the input file is not found and hence not read correctly,
so no thumbs could be made.

an example:
this works perfectly:
/Users/demo/myprogram /Volumes/vol1/input/file.pdf /Volumes/vol1/output/out

this gets scrambled incorrectly:
/Users/demo/myprogram /Volumes/vol1/ïnpût/filé.pdf /Volumes/vol1/output/out

my code:


int main (int argc, const char *argv[])
{
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	NSLog([[NSString alloc] initWithFormat:@"Processing file '%s' to '%s'.",argv[1], argv[2]]);
	NSString *inpath;
	NSString *outpath;
	
	inpath = [[[NSString alloc] initWithFormat:@"%s",argv[1]]  stringByExpandingTildeInPath];
    NSURL * url = [NSURL fileURLWithPath:inpath];
    CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)url, NULL);

    if (source)
    {
        NSDictionary* thumbOpts = [NSDictionary dictionaryWithObjectsAndKeys:
                        (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform,
                        (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent,
                        nil];

		size_t count = CGImageSourceGetCount(source);			
		integer_t i = 0;
		
		if ((count == 0)) 
		{
			CGImageRef image = CGImageSourceCreateThumbnailAtIndex(source, 0, (CFDictionaryRef)thumbOpts);

			outpath = [[[NSString alloc] initWithFormat:@"%s.jpg",argv[2]]  stringByExpandingTildeInPath];
 			NSURL * outurl = [NSURL fileURLWithPath: outpath];
			CGImageDestinationRef ref = CGImageDestinationCreateWithURL((CFURLRef)outurl, (CFStringRef)@"public.jpeg", 1, NULL);
			
			// add image to the ImageIO destination (specify the image we want to save)
			CGImageDestinationAddImage(ref, image, NULL);

			if (!CGImageDestinationFinalize(ref))
			{
				NSLog([[NSString alloc] initWithString:@"Error writing JPEG file\n"]);
			}

  			CFRelease(ref);
			CGImageRelease(image);
		} 
		else 
		{
			while ((i < count)) {
				CGImageRef image = CGImageSourceCreateThumbnailAtIndex(source, i, (CFDictionaryRef)thumbOpts);

				outpath = [[[NSString alloc] initWithFormat:@"%s%i.jpg",argv[2],i+1]  stringByExpandingTildeInPath];
				NSURL * outurl = [NSURL fileURLWithPath: outpath];
				CGImageDestinationRef ref = CGImageDestinationCreateWithURL((CFURLRef)outurl, (CFStringRef)@"public.jpeg", 1, NULL);
				
				// add image to the ImageIO destination (specify the image we want to save)
				CGImageDestinationAddImage(ref, image, NULL);
	
				if (!CGImageDestinationFinalize(ref))
				{
					NSLog([[NSString alloc] initWithString:@"Error writing JPEG file\n"]);
				}	
	
				CFRelease(ref);
				CGImageRelease(image);
	
				i++;
			}
		}
		
    }
    else  // couldn't make image source for image, so display nothing
    {
		NSLog([[NSString alloc] initWithString:@"Error reading source file\n"]);
    }
    [pool release];
	
	return 1;
}




This e-mail, and any attachments thereto, is intended only for use by the addressee(s) named herein and may contain legally privileged and/or confidential information and/or information protected by intellectual property rights. 
If you are not the intended recipient, please note that any review, dissemination, disclosure, alteration, printing, copying or transmission of this e-mail and/or any file transmitted with it, is strictly prohibited and may be unlawful. 
If you have received this e-mail by mistake, please immediately notify the sender and permanently delete the original as well as any copy of any e-mail and any printout thereof. 
We may monitor e-mail to and from our network. 

NSS nv
Tieltstraat 167
8740 Pittem
Belgium


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/xcode-users/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.