我的拼圖類遊戲,我有遮蔽兩個圖像的工作剪切圖像, 我已經實現了這個代碼,屏蔽與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;
}
+
=
這是我掩飾後得到的最終結果。
現在我想裁剪圖像中的片狀和
等參(由透明度裁剪圖像)。
如果任何人已經實現了這種代碼或任何想法在這種情況下請分享。
謝謝。
我使用這行代碼如岡蒂斯烏爾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是原始貓圖像,frmImg框架用於保持單個片,在Photoshop和cropImg掩蔽是原始貓的106x106裁剪圖像@ 2x.png。
我要裁切功能如下
- (UIImage *) cropImage:(UIImage*)originalImage withRect:(CGRect)rect {
return [UIImage imageWithCGImage:CGImageCreateWithImageInRect([originalImage CGImage], rect)];
}
我認爲要做到這一點的最好辦法是屏蔽的每一塊,然後創建新的每一塊的新圖景。 – Simon
@Simon:這是我關心的問題,我如何通過透明度將圖像裁剪成片。 – iCoder86
@ iCoder86:您是否獲得了裁剪圖像的解決方案?我也堅持這一點。如果你的代碼能夠工作,你可以分享一下你的代碼嗎? –