2012-10-29 4 views
2

У меня есть изображение, которое я взял с моим устройством iOS, которое содержит несколько строк слов и немного цвета фона (красный). Я хочу, чтобы изображение отображало только слова пользователю (они будут делать что-то подобное). Я не могу использовать UIImageView каким-либо образом, так что просто взятие изображения и установка его на фон не сработает.Transparency iOS

Так что мне было интересно, может ли кто-нибудь сказать мне, какой из следующих методов даст мне лучшие результаты, если они возможны, и пример будет приятным. Я опубликовал код ниже того, что я пытался сделать с небольшой удачей (вариант 2).

  1. сделать фон белым так только слова появляются
  2. Удалить красный цвет с изображения

Спасибо заранее

UIImage *image = [UIImage imageNamed:@"pic1.jpg"]; 

const float colorMasking[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; 
image = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(image.CGImage, colorMasking)]; 

ответ

2
UIImage *image = [UIImage imageNamed:@"image1.jpg"]; 
UIImage *inputImage = [UIImage imageWithData:UIImageJPEGRepresentation(image, 1.0)]; 

const float colorMasking[6] = {225.0, 255.0, 225.0, 255.0, 225.0, 255.0}; 
CGImageRef imageRef = CGImageCreateWithMaskingColors(inputImage.CGImage, colorMasking); 

UIImage *img2 = [UIImage imageWithCGImage:imageRef]; 

Я удалил светло-серый цвет на фоне моего изображения. Диапазон цветов от 225 до 255 для RGB. Теперь он выглядит прозрачным.

+0

Большое спасибо! Но можете ли вы рассказать мне о том, как удалить все цвета, кроме черного или серого (те, которые являются текстом на изображении)? Сейчас, похоже, это не очень эффективно, когда я запускаю ваш код. Еще раз спасибо –

+0

Вы можете изменить минимальный диапазон до 1 для RGB, чтобы остался только черный цвет, и все остальные цвета будут удалены из изображения. const float colorMasking [6] = {1.0, 255.0, 1.0, 255.0, 1.0, 255.0}; – AJS

+0

Спасибо за быстрый ответ. Когда я это делаю, он делает весь экран (изображение) белым. Ты знаешь почему? Я все равно соглашусь, но это было бы очень много, если бы вы могли ответить. Спасибо –