2014-01-04 4 views
0

Я создаю проект, который является довольно забавным.Наложение двух изображений в IOS

В моем проекте, что я делаю, с лицами, наложенными на объекты, например, у меня есть изображение лица на фоне, и мне нужно наложить объект (Apple) на изображение лица, но он не должен полностью перекрываться, но Глаза, особенность рта должна быть видна в объекте, как на картинке в URL

enter image description here

То, что я сделал так далеко, используя AVFoundation Я обнаружение кадра лица за кадром.

Далее мне нужно наложить два изображения. Face image и object, но мне нужно уменьшить альфа-компонент объекта лица, чтобы он выглядел как яблоко.

Может ли кто-нибудь направить меня или предоставить мне примерный код, чтобы я мог добиться того же наложения.

Edit 1:

Ниже приводится код, я использую, чтобы смешать два изображения.

UIImage *bottomImage =[UIImage imageNamed:@"face.jpg"]; 
UIImage *image = imageview.image; 

CGSize newSize = CGSizeMake(imageview.frame.size.width, imageview.frame.size.height); 
UIGraphicsBeginImageContext(newSize); 

// Use existing opacity as is 
[bottomImage drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; 
// Apply supplied opacity 
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8]; 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

imageview.image=newImage; 
UIGraphicsEndImageContext(); 

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

+0

Можете ли вы показать код, в котором вы уже что-то пробовали? – user1781290

+0

У меня есть обновленный код. но мне нужно уменьшить альфу с определенным положением объекта не целого объекта. – user3159646

+0

Итак, вы хотите, чтобы все области изображения лица имели нулевую альфу, а глаза и рот имели более высокое значение? Сначала вам нужно определить область рта и глаза. Используйте внешнюю библиотеку или, возможно, реализуйте какое-то определение функции самостоятельно. Это то, что тебе надо? – user1781290

ответ

0

Если это всегда прямоугольная область, то вы могли бы сделать в части:

  • разделить изображение на прямоугольники с различными значениями альфа, которые вы хотите, а затем нарисуйте их.
    • например. если вы хотите прямоугольник (100, 100), размера (200, 200) с альфа = 0,8 и отдыха, чтобы быть альфа = 0,2, а ширина = высота = 400
- draw rect, top rect: ( 0, 0) size (400, 100) 
- draw rect to the left: ( 0, 100) to (100, 200) 
- draw rect to the right: (300, 100) to (100, 200) 
- draw rect, bottom:  ( 0, 300) to (400, 100) 
------------ 
| top  | 
|   | 
|----------| 
| | M | | 
|L | | R | 
| | | | 
|----------| 
| bottom | 
|----------| 

Нарисуйте все детали отдельно, теперь вы можете управлять альфами отдельно для них. M вот ваша «основная» часть.

Для непрямоугольных вы можете создать маску и использовать ее для создания изображения.

+0

Представление о масках изображения звучит хорошо – radical

Смежные вопросы