如何将Sprite转换为UIImage在Facebook上发布?

时间:2015-02-04 10:03:31

标签: ios cocos2d-x cocos2d-x-3.0

我使用下面的代码将精灵转换为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;
}

0 个答案:

没有答案