Суть данного способа заключается в передаче изображения из вашего приложения прямо в Instagram-экран с фильтрами (ответ на вопрос «почему так?» можно найти здесь). Так как в данном примере будет использоваться изображение, полученное с камеры iOS устройства — логично разделить его на 2 этапа:

1. Запуск камеры и получение снимка (для этого воспользуемся классом UIImagePickerController:).

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
// Включаем редактирование изображений (масштабирование и перемещение)
picker.allowsEditing = YES;
// Устанавливаем в качестве источника получения данных камеру
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController: picker animated: YES];
[picker release];

2. Открытие полученного изображения в приложении Instagram (для этого воспользуемся классом UIDocumentInteractionController)

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage : (UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    // Сохраняем изображение с разрешением *.igo
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.igo"];
    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savedImagePath atomically:YES];

// Проверяем, доступно ли приложение Instagram на данном устройстве NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath];

UIDocumentInteractionController * docController = [[UIDocumentInteractionController alloc] init]; docController.delegate = self; [docController retain]; // Указываем тип программ для открытия docController.UTI = @"com.instagram.exclusivegram"; [docController setURL:imageUrl]; // Показываем меню выбора доступных приложений для отображения изображения [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; } else { // Если приложение Instagram не найдено - показываем соответствующее сообщение UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You have no installation Instagram App" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } }

В нашем случае для открытия изображения будет использоваться только Instagram. Для использования всех подходящих приложений устройства нужно заменить строки

NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.igo"];
docController.UTI = @"com.instagram.exclusivegram"; 

на

NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.ig"];
      docController.UTI = @"com.instagram.photo";

В случае загрузки изображения из другого источника нужно предварительно сохранить его в формате PNG или JPEG (преимущественно JPEG). Для получения лучшего результата рекомендуется использовать JPEG с разрешением как минимум 612 x 612 пикселей, иначе оно не будет загружено (пользователю будет показано сообщение о невозможности загрузки).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *