我正在使用UIImagePicker来加载我上传到照片库(在我的iPad上)的图像,但是它加载的时候没有alpha通道。 我检查过以确保图像有一个。除非在同步到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!'时刻。
答案 0 :(得分:6)
UIImagePicker确实支持带alpha通道的图像,正如Kangoo在自己的回答中所述。
但是,正常工作的条件比通过浏览器将图像下载到照片库更复杂。
首先,使用iOS的图像选择器仅从相机胶卷中选取是最有意义的。在iOS设备上,可以将图像从Mail或Safari保存到相机胶卷,而其他支持带alpha通道图像的应用程序可以保存到相机胶卷。
除了相机胶卷之外,其余照片库中的图像将通过iTunes同步获得。这是一个问题。虽然OSX上的iPhoto确实支持带alpha通道的PNG图像,但当iTunes同步将这些图像推送到iOS设备时,图像背景的透明区域变为不透明白色。
其次,如果你配置iOS的图像选择器以允许编辑(方形裁剪,移动,缩放),那么图像背景的透明区域将变为不透明的黑色!
但是如果您将iOS的图像选择器配置为不允许编辑,并且从相机胶卷中选择图像,则拾取的图像(UIImage)可以具有Alpha通道。
在拾取的UIImage上,使用CGImageGetAlphaInfo(pickedImage.CGImage)获取CGImageAlphaInfo,如果该信息不是(kCGImageAlphaNone或kCGImageAlphaNoneSkipFirst或kCGImageAlphaNoneSkipLast),则图像具有alpha通道。
答案 1 :(得分:0)
没关系。这是我怀疑的。通过itunes(同步)导入png时,alpha通道会以某种方式丢失。必须转换为24位?我将我的图像上传到网络,然后通过浏览器下载到照片库,现在很好。
答案 2 :(得分:-1)
您是否尝试过致电:
imageView.backgroundColor = [UIColor clear]
您可能需要确保imageLayer也是透明的。我不确定这是如何实现的。