UIGraphicsGetImageFromCurrentImageContext - 将图像拆分为两个会创建一个黑色背景

时间:2011-10-29 14:29:17

标签: iphone objective-c ios uiimage

我想将UIImage分成两个单独的图像。 我使用以下(工作)代码。

UIImage *splitMeInTwo = [UIImage imageNamed:@"Star.png"];

UIImageView *original = [[UIImageView alloc] initWithImage:splitMeInTwo];
[self.view addSubview:original];
[original release];

// The size of each part is half the height of the whole image
CGSize size = CGSizeMake([splitMeInTwo size].width, [splitMeInTwo size].height/2);

// Create image-based graphics context for top half
UIGraphicsBeginImageContextWithOptions(size, TRUE, 0.0);

// Draw into context, bottom half is cropped off
//[image drawAtPoint:CGPointMake(0.0,0.0)];
[splitMeInTwo drawAtPoint:CGPointMake(0.0,0.0) blendMode:kCGBlendModeNormal alpha:1.0];

// Grab the current contents of the context as a UIImage 
// and add it to our array
UIImage *top = UIGraphicsGetImageFromCurrentImageContext();
UIImageView *topV = [[UIImageView alloc] initWithImage:top];
CGRect frameTop = topV.frame;
frameTop.origin.x += 360.0f;
topV.frame = frameTop;
[self.view addSubview:topV];
[topV release];

UIGraphicsEndImageContext();

=>结果 http://dl.dropbox.com/u/1503795/Star.png

此代码运行良好,但我从“UIGraphicsGetImageFromCurrentImageContext”获取的UIImage始终为黑色背景。

如何拆分“splitMeInTwo”-UIIMage并保持透明背景?

谢谢!

更新:图片链接正在运行,抱歉;)

3 个答案:

答案 0 :(得分:40)

尝试将opaque参数设置为NO

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);

答案 1 :(得分:0)

我遇到了同样的问题。使用

  

[[UIColor whiteColor] set];

在调用drawInRect之前

。这样背景设置为whiteColor。你将获得所需的彩色图像。

答案 2 :(得分:0)

快速版本:

UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0)
相关问题