Ios 从摄影机卷导入图像并对其进行裁剪
我从相机滚轮加载一个图像,并将其发送到一个函数,该函数根据我创建的矩形返回原始图像的一部分。然后,我可以将其添加到场景中,而不会出现任何问题 当我想加载原始图像的另一部分时,就会出现问题。我想创建两个精灵,每个精灵都有原始图像的不同部分,就像拼图一样,但是当我发送原始图像和不同的矩形时,我会得到与第一次相同的图像,并将两个相同的图像添加到场景中 有什么好主意吗Ios 从摄影机卷导入图像并对其进行裁剪,ios,iphone,cocos2d-iphone,Ios,Iphone,Cocos2d Iphone,我从相机滚轮加载一个图像,并将其发送到一个函数,该函数根据我创建的矩形返回原始图像的一部分。然后,我可以将其添加到场景中,而不会出现任何问题 当我想加载原始图像的另一部分时,就会出现问题。我想创建两个精灵,每个精灵都有原始图像的不同部分,就像拼图一样,但是当我发送原始图像和不同的矩形时,我会得到与第一次相同的图像,并将两个相同的图像添加到场景中 有什么好主意吗 -(void)imagePickerController:(UIImagePickerController *)picker didFi
-(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;
}
多亏了LearnCos,你的答案才准确无误。从较大图像的不同部分创建了两个单独的纹理,然后可以分别添加它们。您确定图像大于600x600点吗?备选方案:从UIImage创建CCTexture2D。然后可以从纹理和矩形创建精灵。您不需要使用CG函数来实现所需的功能。原始图像是一个大的全景图像,因此无法导入整个图像,因为它太大了,因此只需加载部分图像。我仍然可以使用CCTexture2D执行此操作吗?如果您首先将其裁剪为最多4096x4096或2048x2048,具体取决于您要支持的设备。所以,用CG裁剪到纹理大小限制,然后创建一个CCTexture2D,这会有用的。谢谢你的信息,这似乎是一个可行的方法。还有一个问题。假设图像是4096x8000,我可以将前半部分作为纹理加载,然后将后半部分作为纹理加载,这样我就可以访问所有图像,还是有更简单的方法来实现这一点?如果从图像中创建两个单独的纹理,这应该是可能的