unir una sola puedo poner picsart para juntas juntar fotos como celular aplicacion iphone ios xcode uiimageview uiimage

iphone - una - juntar dos fotos android



Cómo combinar/fusionar 2 imágenes en 1 (7)

  1. crear una subvista para añadir imágenes.
  2. agregue todas sus imágenes en esa vista en lugar de la vista principal.
  3. Deja que los botones y otras cosas permanezcan en la vista principal.
  4. renderice solo la vista con imágenes en el contexto de mapa de bits en lugar de la vista principal como lo está haciendo ahora.

le gustará saber quién hacer guardar 2 imágenes en 1 imagen.

Una de las fotos permite mover, rotar y acercar / alejar ...

Estoy haciendo esto, pero básicamente captura todas las cosas en la pantalla, incluyendo mis botones ...

UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *savedImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();


Aquí hay un método para que la extensión UIImage combine varias imágenes:

class func combine(images: UIImage...) -> UIImage { var contextSize = CGSizeZero for image in images { contextSize.width = max(contextSize.width, image.size.width) contextSize.height = max(contextSize.height, image.size.height) } UIGraphicsBeginImageContextWithOptions(contextSize, false, UIScreen.mainScreen().scale) for image in images { let originX = (contextSize.width - image.size.width) / 2 let originY = (contextSize.height - image.size.height) / 2 image.drawInRect(CGRectMake(originX, originY, image.size.width, image.size.height)) } let combinedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return combinedImage }

Ejemplo:

UIImage.combine(image1, image2)


Puede usar este método, que es muy dinámico y puede especificar la posición inicial de la segunda imagen y el tamaño total de la imagen.

-(UIImage *) addImageToImage:(UIImage *)img withImage2:(UIImage *)img2 andRect:(CGRect)cropRect withImageWidth:(int) width { CGSize size = CGSizeMake(width,40); UIGraphicsBeginImageContext(size); CGPoint pointImg1 = CGPointMake(0,0); [img drawAtPoint:pointImg1]; CGPoint pointImg2 = cropRect.origin; [img2 drawAtPoint: pointImg2]; UIImage* result = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return result; }


Puedes crear gráficos de contexto y dibujar ambas imágenes en él. Obtendrá un resultado de imagen de ambas imágenes de origen combinadas.

- (UIImage*)imageByCombiningImage:(UIImage*)firstImage withImage:(UIImage*)secondImage { UIImage *image = nil; CGSize newImageSize = CGSizeMake(MAX(firstImage.size.width, secondImage.size.width), MAX(firstImage.size.height, secondImage.size.height)); if (UIGraphicsBeginImageContextWithOptions != NULL) { UIGraphicsBeginImageContextWithOptions(newImageSize, NO, [[UIScreen mainScreen] scale]); } else { UIGraphicsBeginImageContext(newImageSize); } [firstImage drawAtPoint:CGPointMake(roundf((newImageSize.width-firstImage.size.width)/2), roundf((newImageSize.height-firstImage.size.height)/2))]; [secondImage drawAtPoint:CGPointMake(roundf((newImageSize.width-secondImage.size.width)/2), roundf((newImageSize.height-secondImage.size.height)/2))]; image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }


// C objetivo

UIImage *image1 = [UIImage imageNamed:@"image1.png"]; UIImage *image2 = [UIImage imageNamed:@"image2.png"]; CGSize size = CGSizeMake(image1.size.width, image1.size.height + image2.size.height); UIGraphicsBeginImageContext(size); [image1 drawInRect:CGRectMake(0,0,size.width, image1.size.height)]; [image2 drawInRect:CGRectMake(0,image1.size.height,size.width, image2.size.height)]; UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //set finalImage to IBOulet UIImageView imageView.image = finalImage;

// Swift

let topImage = UIImage(named: "image1.png") let bottomImage = UIImage(named: "image2.png") let size = CGSize(width: topImage!.size.width, height: topImage!.size.height + bottomImage!.size.height) UIGraphicsBeginImageContextWithOptions(size, false, 0.0) topImage!.draw(in: CGRect(x: 0, y: 0, width: size.width, height: topImage!.size.height)) bottomImage!.draw(in: CGRect(x: 0, y: topImage!.size.height, width: size.width, height: bottomImage!.size.height)) let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() //set finalImage to IBOulet UIImageView mergeImage.image = newImage


Swift 3

En este ejemplo, la imagen frontal se está dibujando dentro de la otra imagen usando una inserción de 20% de margen.

La imagen de fondo debe dibujarse antes y luego la imagen frontal en secuencia.

Utilicé esto para colocar una imagen del icono "Reproducir" delante de una imagen de marco de video dentro de un UIImageView como abajo:

Uso:

self.image = self.mergedImageWith(frontImage: UIImage.init(named: "play.png"), backgroundImage: UIImage.init(named: "backgroundImage.png")))

Método:

func mergedImageWith(frontImage:UIImage?, backgroundImage: UIImage?) -> UIImage{ if (backgroundImage == nil) { return frontImage! } let size = self.frame.size UIGraphicsBeginImageContextWithOptions(size, false, 0.0) backgroundImage?.draw(in: CGRect.init(x: 0, y: 0, width: size.width, height: size.height)) frontImage?.draw(in: CGRect.init(x: 0, y: 0, width: size.width, height: size.height).insetBy(dx: size.width * 0.2, dy: size.height * 0.2)) let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage }


Swift-3 ( IOS10.3 )

extension UIImage { func combineWith(image: UIImage) -> UIImage { let size = CGSize(width: self.size.width, height: self.size.height + image.size.height) UIGraphicsBeginImageContextWithOptions(size, false, 0.0) self.draw(in: CGRect(x:0 , y: 0, width: size.width, height: self.size.height)) image.draw(in: CGRect(x: 0, y: self.size.height, width: size.width, height: image.size.height)) let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage } }

Uso

let image1 = UIImage(named: "image1.jpg") let image2 = UIImage(named: "image2.jpg") yourImageView.image = image1?.combineWith(image: image2)