Подтвердить что ты не робот

Как объединить два UIImages?

Я пытаюсь объединить два разных изображения и создать новый. Так я бы хотел: У меня есть этот образ (A): polaroid

Это изображение PNG, и я хотел бы объединить его с другим изображением (B), которое я взял с телефона, чтобы создать что-то вроде этого: polaroid merged

Мне нужна функция, которая объединяет A с B, создавая C. Размер должен оставаться от изображения A, а изображение B должно автоматически адаптировать размер, чтобы вписаться в поляроид (A). Можно ли это сделать? Благодарим за помощь!

UPDATE Только одно, изображение (A) - это квадрат, а изображение, которое я взял, - это 16: 9, как я могу это исправить? Если я использую вашу функцию, изображение (B), которое я взял, растягивается!

4b9b3361

Ответ 1

Надеюсь, это поможет вам,

var bottomImage = UIImage(named: "bottom.png")
var topImage = UIImage(named: "top.png")

var size = CGSize(width: 300, height: 300)
UIGraphicsBeginImageContext(size)

let areaSize = CGRect(x: 0, y: 0, width: size.width, height: size.height)
bottomImage!.drawInRect(areaSize)

topImage!.drawInRect(areaSize, blendMode: kCGBlendModeNormal, alpha: 0.8)

var newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

Все лучшее:)

Ответ 2

Таким образом, изображение наложения будет намного чище

class func mergeImages(imageView: UIImageView) -> UIImage {
 UIGraphicsBeginImageContextWithOptions(imageView.frame.size, false, 0.0) 
 imageView.superview!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
 let image = UIGraphicsGetImageFromCurrentImageContext()
 UIGraphicsEndImageContext()

 return image 
}

введите описание изображения здесь

Ответ 3

Объективная версия C этого решения с пересмотренной логикой верхнего изображения:

-(UIImage *)getImageInclosedWithinAnotherImage
{
float innerImageSize = 20;
UIImage *finalImage;

UIImage *outerImage = [UIImage imageNamed:@"OuterImage.png"];
UIImage *innerImage = [UIImage imageNamed:@"InnerImage.png"];

CGSize outerImageSize = CGSizeMake(40, 40); // Provide custom size or size of your actual image
UIGraphicsBeginImageContext(outerImageSize);

//calculate areaSize for re-centered inner image
CGRect areSize = CGRectMake(((outerImageSize.width/2) - (innerImageSize/2)), ((outerImageSize.width/2) - (innerImageSize/2)), innerImageSize, innerImageSize);
[outerImage drawInRect:CGRectMake(0, 0, outerImageSize.width, outerImageSize.height)];
[innerImage drawInRect:areSize blendMode:kCGBlendModeNormal alpha:1.0];

finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return finalImage;

}