从相机胶卷导入图像并裁剪

时间:2014-03-05 08:38:15

标签: ios iphone cocos2d-iphone

我从相机胶卷加载图像并将其发送到一个函数,该函数根据我创建的矩形返回原始图像的一部分。然后我可以将它添加到场景中,没有任何问题。

当我想加载原始图像的另一部分时,会出现问题。我想创建2个精灵,每个精灵都有原始图像的不同部分,就像拼图一样,但是当我发送原始图像和不同的矩形时,我得到的图像与第一次相同,并且有两个相同的图像添加到场景。

任何想法都会受到赞赏吗?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // newImage is a UIImage do not try to use a UIImageView
    UIImage *newImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    UIImage *newImage2 = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    //newImage2 = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    // Dismiss UIImagePickerController and release it
    [picker dismissModalViewControllerAnimated:YES];
    [picker.view removeFromSuperview];
    [picker    release];

    CGRect newRect = CGRectMake(0, 0, 320, 460);
    CGRect newRect2 = CGRectMake(600, 600, 100, 100);

    UIImage *testImage = [self imageFromImage:newImage inRect:newRect];
    UIImage *testImage2 = [self imageFromImage:newImage2 inRect:newRect2];

    CCSprite *scaledImage = [CCSprite spriteWithCGImage:testImage.CGImage key:@"ImageFromPicker"];
    scaledImage.position = ccp(s.width/2, s.height/2);
    [self addChild:scaledImage];

    CCSprite *scaledImage2 = [CCSprite spriteWithFile:@"play.png"];//[CCSprite spriteWithCGImage:testImage2.CGImage key:@"ImageFromPicker"];
    scaledImage2.position = ccp(560,40);
    [self addChild:scaledImage2];
}

裁剪图像的方法:

- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect
{
    CGImageRef sourceImageRef = [image CGImage];
    CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
    UIImage *tempImage = [UIImage imageWithCGImage:newImageRef];
    return tempImage;
}

1 个答案:

答案 0 :(得分:0)

感谢LearnCocos,你得到了答案。从较大图像的不同部分创建2个单独的纹理,然后可以单独添加它们。