簡體   English   中英

如何使用UI從UIImagePicker加載圖像

[英]How to load image from UIImagePicker with alpha

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

正如Kangoo在其自己的答案中所述,UIImagePicker確實支持帶有Alpha通道的圖像。

但是,使其正常工作的條件比僅通過瀏覽器將圖像下載到照片庫要復雜得多。

首先,最有意義的是使用iOS的圖像選擇器僅從“相機膠卷”中進行拾取。 在iOS設備上,可以將郵件或Safari中的圖像保存到相機膠卷中,而其他支持帶有Alpha通道圖像的應用程序也可以將其保存到相機膠卷中。

iTunes同步會將照片庫其余部分中的圖像(除了“相機膠卷”之外的圖像)帶到那里。 那是個問題。 盡管OSX上的iPhoto確實支持帶有Alpha通道的PNG圖像,但是當iTunes sync將這些圖像推送到iOS設備時,圖像背景的透明區域將變為不透明的白色。

其次,如果您將iOS的圖像選擇器配置為允許編輯(方形裁剪,移動,縮放),則圖像背景的透明區域將變為不透明的黑色!

但是,如果將iOS的圖像選擇器配置為不允許編輯,並且從“相機膠卷”中選擇圖像,則所選擇的圖像(UIImage)可以具有Alpha通道。

在選擇的UIImage上,使用CGImageGetAlphaInfo(pickedImage.CGImage)獲取CGImageAlphaInfo,如果該信息不是(kCGImageAlphaNone或kCGImageAlphaNoneSkipFirst或kCGImageAlphaNoneSkipLast),則該圖像具有Alpha通道。

沒關系。 就像我懷疑的那樣。 通過iTunes(同步)導入png時,alpha通道會丟失。 必須轉換為24bit嗎? 我將圖片上傳到網上,然后通過瀏覽器下載到圖片庫,現在可以了。

您是否嘗試致電:

imageView.backgroundColor = [UIColor clear]

可能您可能還需要確保imageLayer也透明。 我不確定這是如何實施的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM