代码之家  ›  专栏  ›  技术社区  ›  virgil debique

从相机卷导入图像并裁剪

  •  0
  • virgil debique  · 技术社区  · 10 年前

    我从相机卷加载图像并将其发送到一个函数,该函数基于我创建的矩形返回原始图像的一部分。然后我可以毫无问题地将其添加到场景中。

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

    您有什么想法吗?

    -(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 回复  |  直到 10 年前
        1
  •  0
  •   virgil debique    10 年前

    多亏了李尔科科斯,你的答案准确无误。从较大图像的不同部分创建了两个单独的纹理,然后可以单独添加它们。