我正在使用UIImagePicker加载我已经上传到图片库(在我的iPad上)的图像,但是它加载时没有使用alpha通道。我已经检查了tripple以确保图像中有一个。除非它在同步到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];
}我做错了什么?我希望这不是“Doh!”片刻。
发布于 2012-11-14 13:07:47
正如Kangoo在他们自己的答案中所说的那样,UIImagePicker确实支持带有alpha通道的图像。
然而,它正常工作的条件比通过浏览器将图像下载到图片库要复杂得多。
首先,使用iOS的图像拾取器只从相机卷中拾取是最有意义的。在iOS设备上,可以将邮件或Safari中的图像保存到Camera Roll中,而其他支持alpha通道图像的应用程序可以将图像保存到Camera Roll中。
照片库中的其他图像,而不是相机卷轴,将通过iTunes同步到达那里。这是一个问题。尽管OSX上的iPhoto确实支持带有alpha通道的PNG图像,但当iTunes同步将这些图像推送到iOS设备时,图像背景的透明区域会变成不透明的白色。
其次,如果你将iOS的图像选择器配置为允许编辑(方形裁剪、移动、缩放),那么图像背景的透明区域将变成不透明的黑色!
但是,如果将iOS的图像拾取器配置为不允许编辑,并且从相机胶卷中拾取图像,则拾取的图像(UIImage)可能具有alpha通道。
在拾取的UIImage上,使用CGImageGetAlphaInfo(pickedImage.CGImage)获取CGImageAlphaInfo,如果该信息不是(kCGImageAlphaNone、kCGImageAlphaNoneSkipFirst或kCGImageAlphaNoneSkipLast),则图像具有alpha通道。
发布于 2011-11-07 12:35:16
不要紧。正如我所怀疑的那样。通过itunes导入png (同步)时,alpha通道不知何故丢失。必须转换为24位?我把我的照片上传到网上,然后通过浏览器下载到图片库,现在一切都好了。
发布于 2011-11-06 17:20:04
你有没有试过打电话:
imageView.backgroundColor = [UIColor clear]您可能还需要确保imageLayer是透明的。我不确定这是如何实现的。
https://stackoverflow.com/questions/8024543
复制相似问题