Как загрузить изображение из UIImagePicker с альфа - PullRequest
2 голосов
/ 06 ноября 2011

Я использую UIImagePicker для загрузки изображения, загруженного в библиотеку фотографий (на моем iPad), однако оно загружается без альфа-канала. Я проверил тройку, чтобы убедиться, что изображение есть. Разве он не удаляется при синхронизации с itunes?

Вот код, который я использую для средства выбора изображений, когда он завершает сбор:

-(void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    //dissmiss picker
    [imagePopOver dismissPopoverAnimated:YES];

    //get the picker image
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    //create image view for selected image
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(0, 0, imageView.image.size.width, imageView.image.size.height);
    imageView.center = CGPointMake(512, 384);
    [imageLayer addSubview:imageView];

    //release image and image view
    [image release];
    [imageView release];
}

Что я делаю не так? Я надеюсь, что это не «Доу!» момент.

Ответы [ 3 ]

6 голосов
/ 14 ноября 2012

UIImagePicker поддерживает изображения с альфа-каналом, как заявляет Kangoo в своем ответе.

Однако условия для его правильной работы сложнее, чем просто загрузка изображения через браузер в библиотеку фотографий.

Прежде всего, имеет смысл использовать средство выбора изображений iOS, чтобы выбирать только из Camera Roll. На устройстве iOS можно сохранять изображения из Mail или Safari в Camera Roll, а другие приложения, поддерживающие изображения с альфа-каналом, позволяют сохранять в Camera Roll.

Изображения в остальной части библиотеки фотографий, кроме Camera Roll, могли бы быть получены при синхронизации iTunes. И это проблема. Хотя iPhoto в OSX поддерживает изображения PNG с альфа-каналом, при синхронизации iTunes эти изображения передаются на устройство iOS, прозрачные области фона изображения становятся непрозрачными белыми.

Во-вторых, если вы настроите средство выбора изображений iOS для разрешения редактирования (квадратная обрезка, перемещение, масштабирование), тогда прозрачные области фона изображения станут непрозрачными черными!

Но если вы настроите средство выбора изображений iOS, чтобы НЕ разрешать редактирование, и выберете изображение из Camera Roll, тогда выбранное изображение (UIImage) может иметь альфа-канал.

В выбранном UIImage используйте CGImageGetAlphaInfo (pickImage.CGImage), чтобы получить CGImageAlphaInfo, и, если эта информация не является (kCGImageAlphaNone или kCGImageAlphaNoneSkipFirst или kCGImageAlpha * 1014, имеет изображение альфа-канала), тогда у него есть изображение alphaFlFN.

0 голосов
/ 07 ноября 2011

Неважно.Это было, как я и подозревал.Альфа-канал как-то теряется при импорте png через itunes (синхронизация).Должно ли быть преобразование в 24-бит?Я загрузил свое изображение в Интернет, а затем через браузер загрузил его в библиотеку фотографий, и теперь все нормально.

0 голосов
/ 06 ноября 2011

Вы пробовали звонить:

imageView.backgroundColor = [UIColor clear]

Возможно, вам, возможно, потребуется убедиться, что imageLayer также прозрачен.Я не уверен, как это было реализовано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...