2

我正在使用 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!” 片刻。

4

3 回答 3

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 通道。

于 2012-11-14T05:07:46.993 回答
0

没关系。正如我所怀疑的那样。通过 iTunes(同步)导入 png 时,alpha 通道会以某种方式丢失。一定要转成24位吗?我将图像上传到网络,然后通过浏览器将其下载到照片库,现在一切正常。

于 2011-11-07T04:35:15.960 回答
-1

你有没有试过打电话:

imageView.backgroundColor = [UIColor clear]

可能您可能需要确保 imageLayer 也是透明的。我不确定这是如何实施的。

于 2011-11-06T09:20:04.117 回答