Quiero tomar una subimagen de un UIImage. He buscado una pregunta similar en vano.Devolver una subimagen de un UIImage
Conozco el rango de píxeles que quiero capturar: ¿cómo puedo devolver esta subimagen desde una imagen existente?
Quiero tomar una subimagen de un UIImage. He buscado una pregunta similar en vano.Devolver una subimagen de un UIImage
Conozco el rango de píxeles que quiero capturar: ¿cómo puedo devolver esta subimagen desde una imagen existente?
Esto debería ayudar: http://iphonedevelopment.blogspot.com/2010/11/drawing-part-of-uiimage.html
Este fragmento de código es la creación de una categoría de UIImage
pero el código debe ser modificado fácilmente para trabajar sin que sea una categoría.
Un camino más corto para hacer la misma cosa es la siguiente:
CGRect fromRect = CGRectMake(0, 0, 320, 480); // or whatever rectangle
CGImageRef drawImage = CGImageCreateWithImageInRect(image.CGImage, fromRect);
UIImage *newImage = [UIImage imageWithCGImage:drawImage];
CGImageRelease(drawImage);
Espero que esto ayude!
Actualizado respuesta rápida para @donkim 3:
let fromRect=CGRect(x:0,y:0,width:320,height:480)
let drawImage = image.cgImage!.cropping(to: fromRect)
let bimage = UIImage(cgImage: drawImage!)
De esta manera debe funcionar bajo hilo principal, no es un método seguro para subprocesos. – AechoLiu
Esto no funcionará para dispositivos retina, ya que cortará la imagen cruda y no la representación en la pantalla retina (es decir, si 320x480 es la resolución normal y 640x960 retina de la imagen original, el CGRect con (0, 0 , 320, 480) cortaría el cuarto superior izquierdo de la imagen cuando está en la retina) – ohcibi
@ohcibi Para hacer que esta unidad también funcione con la retina, debe obtener el factor de escala de la imagen ('image.scale'), aplicar al rect (multiplique todos los valores numéricos por ese factor) y al crear el 'UIImage' final, use el método' imageWithCGImage: scale: orientation: 'para establecer el factor de escala correcto nuevamente. – Mecki