UIGraphicsGetImageFromCurrentImageContext - Разделение изображения на две части создает черный фон - PullRequest
15 голосов
/ 29 октября 2011

Я хотел бы разделить 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

Этот код работает хорошо, но UIImage, который я получаю из "UIGraphicsGetImageFromCurrentImageContext", всегда имеет черный фон.

Как я могу разделить "splitMeInTwo" -UIIMage и сохранить прозрачный фон?

Спасибо!

ОБНОВЛЕНИЕ: ссылка на изображение теперь работает, извините;)

Ответы [ 2 ]

40 голосов
/ 30 октября 2011

Попробуйте установить непрозрачный параметр на NO.

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
0 голосов
/ 26 октября 2016

У меня была такая же проблема. Используйте

[[UIColor whiteColor] set];

до вызова drawInRect. Так что фон установлен на whiteColor. И вы получите цветное изображение, необходимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...