我使用下面的代码将精灵转换为UIImage
版本3.2中的cocos2dx
。
并在Facebook上发布,我将在Facebook上查看显示黑色背景图像。
//此代码ObjCCalls.mm
类
Sprite *sprite=(Sprite*)GameManager::sharedGameManager()->playerImageOnFb.at(2);
RenderTexture* rend = RenderTexture::create(sprite->getTexture()->getPixelsWide(), sprite->getTexture()->getPixelsHigh());
sprite->setAnchorPoint(Vec2(0, 0));
rend->begin();
sprite->visit();
rend->end();
Image *image=rend->newImage();
AppController* appDelegate = [UIApplication sharedApplication].delegate;
UIImage *tempImage=[appDelegate imageFromCCImage:image] ;
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
tempImage,@"message",
nil];
[FBRequestConnection startWithGraphPath:@"me/photos"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error)
{
}];
// AppDeleagate.mm
- (UIImage *) imageFromCCImage:(cocos2d::Image *) ccImage
{
NSUInteger bytesPerPixel = 4;
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL,
ccImage->getData(),
ccImage->getDataLen() * bytesPerPixel,
NULL);
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
NSUInteger scanWidth = ccImage->getWidth() * bytesPerPixel;
CGImageRef imageRef = CGImageCreate(ccImage->getWidth(),
ccImage->getHeight(),
8,
bytesPerPixel * 8,
scanWidth,
colorSpaceRef,
bitmapInfo,
provider,
NULL,
NO,
renderingIntent);
UIImage *image = [UIImage imageWithCGImage:imageRef];
CGColorSpaceRelease(colorSpaceRef);
CGImageRelease(imageRef);
return image;
}