estoy trabajando en el tipo de rompecabezas de juego donde tengo dos imágenes de enmascaramiento, he implementado este código para enmascararrecorte de imágenes con transparencia en iPhone
- (UIImage*) maskImage:(UIImage *)image withMaskImage:(UIImage*)maskImage {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef maskImageRef = [maskImage CGImage];
CGContextRef mainViewContentContext = CGBitmapContextCreate (NULL, maskImage.size.width, maskImage.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);
if (mainViewContentContext==NULL)
return NULL;
CGFloat ratio = 0;
ratio = maskImage.size.width/ image.size.width;
if(ratio * image.size.height < maskImage.size.height) {
ratio = maskImage.size.height/ image.size.height;
}
CGRect rect1 = {{0, 0}, {maskImage.size.width, maskImage.size.height}};
CGRect rect2 = {{-((image.size.width*ratio)-maskImage.size.width)/2,-((image.size.height*ratio)-maskImage.size.height)/2},{image.size.width*ratio, image.size.height*ratio}};
CGContextClipToMask(mainViewContentContext, rect1, maskImageRef);
CGContextDrawImage(mainViewContentContext, rect2, image.CGImage);
CGImageRef newImage = CGBitmapContextCreateImage(mainViewContentContext);
CGContextRelease(mainViewContentContext);
UIImage *theImage = [UIImage imageWithCGImage:newImage];
CGImageRelease(newImage);
return theImage;
}
+
=
Este es el resultado final que obtuve después del enmascaramiento.
Ahora me gustaría cortar la imagen en la pieza como y y así sucesivamente de forma paramétrica (recortar una imagen de transparencia).
si alguien ha implementado dicho código o alguna idea sobre este escenario, por favor comparta.
Gracias.
estoy usando esta línea de código para una imagen original del gato, marco frmImg para la celebración de pieza individual, enmascarado en photoshop y cropImg como sugerencia de Guntis Treulands
int i=1;
for (int x=0; x<=212; x+=106) {
for (int y=0; y<318; y+=106) {
CGRect rect = CGRectMake(x, y, 106, 106);
CGRect rect2x = CGRectMake(x*2, y*2, 212, 212);
UIImage *orgImg = [UIImage imageNamed:@"[email protected]"];
UIImage *frmImg = [UIImage imageNamed:[NSString stringWithFormat:@"%[email protected]",i]];
UIImage *cropImg = [self cropImage:orgImg withRect:rect2x];
UIImageView *tmpImg = [[UIImageView alloc] initWithFrame:rect];
[tmpImg setUserInteractionEnabled:YES];
[tmpImg setImage:[self maskImage:cropImg withMaskImage:frmImg]];
[self.view addSubview:tmpImg];
i++;
}
}
orgImg es decir 106x106 imagen recortada del original del gato @ 2x.png.
mi función para cortar es tan siguiente
- (UIImage *) cropImage:(UIImage*)originalImage withRect:(CGRect)rect {
return [UIImage imageWithCGImage:CGImageCreateWithImageInRect([originalImage CGImage], rect)];
}
Creo que la mejor manera de hacer esto es para enmascarar cada pieza y luego crear una nueva imagen de cada nueva pieza. – Simon
@Simon: Esto es lo que me preocupa, ¿Cómo puedo recortar una imagen en pedazos por transparencia? – iCoder86
@ iCoder86: ¿obtuviste la solución para recortar la imagen? También estoy atrapado con eso. ¿Puedes compartir tu código si lo tienes funcionando? –