
IOS рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдлрд╝реЛрдЯреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред рдЖрдкрдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ VKontakte, Facebook - рд╕реЗрд╡рд╛рдПрдВ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ рд▓рдЧрднрдЧ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред рддреЛ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЛрд░рд╕реНрдХреНрд╡реЗрдпрд░, рдкрдеред
рдРрд╕реА рд╕реЗрд╡рд╛рдПрдБ рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдФрд░ рдпрд╣ рд╣рдо рд╣реИрдВ) рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдЙрдирдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рднрд╛рдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЬреЛ рдлреЛрдЯреЛ рдПрд▓реНрдмрдо рд╕реЗ рдЪрд┐рддреНрд░ рд▓реЗрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирдИ рддрд╕реНрд╡реАрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдХ .h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
@interface MYViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate> ... @end
рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдХ .m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
@implementation MYViewController - (IBAction)pickupImage:(id)sender { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:imagePicker animated:YES]; [imagePicker release]; } #pragma mark - UIImagePickerControllerDelegate - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; // UIImage // [serviceAPI postWithText:@" !" withImage:image]; [picker dismissModalViewControllerAnimated:YES]; } @end
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ред рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдпрд╛ рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдкрдврд╝реЗрдВред рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдареАрдХ рджрд┐рди рд╡реЗрдм рд╕реЗрд╡рд╛ EXIF тАЛтАЛрдЫрд╡рд┐ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╢реВрдЯрд┐рдВрдЧ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдХреИрдорд░реЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рддрд╕реНрд╡реАрд░ рд▓реА рдЧрдИ рдереА, рдкреНрд░рддреНрдпреЗрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рддрд╣рдд рдлреЛрдЯреЛ рдХрд╛ рдЙрдиреНрдореБрдЦреАрдХрд░рдгред рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдИ EXIF тАЛтАЛрдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред
рдирд┐рд░рдВрддрд░
UIImagePickerControllerOriginalImage
рдореВрд▓ рдХрд╛ рдирд╛рдо рдХрд╛рдлреА рдореВрд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рджреГрд╖реНрдЯрд┐ рд╕реЗ рдореВрд▓ рд╣реИ рдХрд┐ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдЖрдкрдХреЛ рдмрд┐рдВрджреБ (0,0) рд╕реЗ рдмрд┐рдВрджреБ (
рдЪреМрдбрд╝рд╛рдИ -1,
рдКрдБрдЪрд╛рдИ -1) рддрдХ рджреА рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХреНрд░реЙрдк рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдЭрдВрдбрд╛ рд╕реЗрдЯ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
imagePicker.allowsEditing = YES
рдпрд╣ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдореВрд▓ рдлреЛрдЯреЛ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рднреА рд╣реЛрддреА рд╣реИред
UIImagePickerControllerReferenceURL рдХреБрдВрдЬреА рдФрд░
AssetsLibrary рдлреНрд░реЗрдорд╡рд░реНрдХ
рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ ред
IOS SDK 4.1 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛,
info
рдкреИрд░рд╛рдореАрдЯрд░, рдЬреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдВрдЬреА UIImagePickerControllerReferenceURL рджреНрд╡рд╛рд░рд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдПрд▓реНрдмрдо рд╕реЗ рдлреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рдореВрд▓реНрдп рд╕рдВрдкрддреНрддрд┐, рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╡рд┐рдзрд┐ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL]; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library assetForURL:assetURL resultBlock:^(ALAsset *asset) { CLLocation *location = [asset valueForProperty:ALAssetPropertyLocation];
CLLocation *location = [asset valueForProperty:ALAssetPropertyLocation];
- рдпрд╣рд╛рдВ рд╣рдо рдлреЛрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ <AssetsLibrary / ALAsset.h> рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╢реЗрд╖ рдХреБрдВрдЬреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдФрд░ рдЖрдЧреЗ рд╣рдо рднреВ-рдЪрд┐рд╣реНрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдХреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЕрдВрддрддрдГ, рд╕реЗрд╡рд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ, рд╣рдо рдЫрд╡рд┐ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо
UIImageJPEGRepresentation рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
Iphone-exif рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ exif рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдЕрдореВрд░реНрдд рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рдХреЛрдб рдЬреЛ рддрд╕реНрд╡реАрд░ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
#import "EXF.h" #import "EXFUtils.h" + (NSData *)populateData:(NSData *)data byLocation:(CLLocation *)location { EXFJpeg *exfJpeg = [[[EXFJpeg alloc] init] autorelease]; [exfJpeg scanImageData:data]; // , // EXFGPSLoc* gpsLocLatitude = [[[EXFGPSLoc alloc] init] autorelease]; [self populateGPS:gpsLocLatitude byValue:[self locationArrayForValue:location.coordinate.latitude]]; [exfJpeg.exifMetaData addTagValue:gpsLocLatitude forKey:[NSNumber numberWithInt:EXIF_GPSLatitude]]; // EXFGPSLoc* gpsLocLongitude = [[[EXFGPSLoc alloc] init] autorelease]; [self populateGPS:gpsLocLongitude byValue:[self locationArrayForValue:location.coordinate.longitude]]; [exfJpeg.exifMetaData addTagValue:gpsLocLongitude forKey:[NSNumber numberWithInt:EXIF_GPSLongitude]]; // "" NSString *refLatitude = (location.coordinate.latitude < 0 ? @"S" : @"N"); [exfJpeg.exifMetaData addTagValue:refLatitude forKey:[NSNumber numberWithInt:EXIF_GPSLatitudeRef]]; // "" NSString *refLongitude = (location.coordinate.longitude < 0 ? @"W" : @"E"); [exfJpeg.exifMetaData addTagValue:refLongitude forKey:[NSNumber numberWithInt:EXIF_GPSLongitudeRef]]; NSMutableData *dataWithExif = [NSMutableData data]; [exfJpeg populateImageData:dataWithExif]; return dataWithExif; }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рдлрд▓рддрд╛ рд╕реЗ рдПрдХ рдХрджрдо рджреВрд░ рд╣реИрдВред рд╣рдо NSData рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рд░рд┐рд╡рд░реНрд╕ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ UIImage рдорд┐рд▓рддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреВрд░реНрд╡ рд╕рдВрдХреЗрдд рдХреЗ рдХреЗрд╡рд▓ UIImage рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рд╢, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ , рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢,
[UIImage imageWithData: data] рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ NSData рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рднреВ-рд╕реНрдерд┐рддрд┐, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдЦреЛ рджреЗрддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реАрдзреЗ "рдЕрдВрджрд░" рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, UIImage рд╕реНрддрд░ рдкрд░ рдЪрд┐рддреНрд░ рдХрд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ред
рджреВрд╕рд░реЗ , рдЖрдк рдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ CoreGraphics рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдирд┐рдХрд╛рд╕
рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЪрд┐рддреНрд░ рдФрд░ рдЙрд╕рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рддрдм рддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо NSData рд╡рд░реНрдЧ рдХреА рдХреЛрдИ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рди рдХрд░ рд▓реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдмрдирд╛ рд▓реЗрдВред рдФрд░ рд╣рдо рд╕рдм рдХреБрдЫ рдмреЗрд╣рддрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд░реНрдерди (UIImage + NSData-Exif) рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рднреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдкрдбрд╝реЗред
рдПрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, NSMutableDictionary рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ UIImage рдФрд░ NSData рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХрд╛рдо рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реАрдзреЗ UIImage рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдмрджреНрдз рд╡рд╕реНрддреБрдПрдБ
IOS 4.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдШреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдпрд╣рд╛рдБ ред рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ <objc / runtime.h> рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрд╕реЛрд╕рд┐рдПрд╢рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy)
рдкрд┐рдЫрд▓реЗ рддрд░реНрдХ рдХреЗ рдореВрд▓реНрдп рдУрдмрдЬреЗрдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗ:
enum { OBJC_ASSOCIATION_ASSIGN = 0, OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, OBJC_ASSOCIATION_COPY_NONATOMIC = 3, OBJC_ASSOCIATION_RETAIN = 01401, OBJC_ASSOCIATION_COPY = 01403 }; typedef uintptr_t objc_AssociationPolicy;
рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
id objc_getAssociatedObject(id object, void *key)
рдЗрд╕рд▓рд┐рдП ALAssetsLibrary рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ UIImage рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
#import <objc/runtime.h> // - . char kUIImageExifKey; ... objc_setAssociatedObject(<#image#>, &kUIImageExifKey, <#DATA#>, OBJC_ASSOCIATION_RETAIN); ...
UIImage рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдорд╛рд░реНрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛
1) рдПрдХ рддрд╕реНрд╡реАрд░ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
2) рдЗрди рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░реЗрдВ;
3) рд╣рд░ рдмрд╛рд░ рддрд╕реНрд╡реАрд░ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ UIImage рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛рд╡ рд░рдЦреЗрдВ (рдЪрд┐рддреНрд░ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐)ред
4) рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ, iphone-exif рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╡рд╣ рд╕рдм рд╣реИред
рдпрджрд┐ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рддреЛ рдмрд╕ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдлреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕реЗ "рдореБрдХрд╛рдмрд▓рд╛" рдХреЛрдб рдореЗрдВ рд░рдЦреЗрдВ, рдФрд░ рдЗрд╕реЗ рдЧрд┐рдЯрдм рдкрд░ рдбрд╛рд▓ рджреЗрдВред
