我知道在cocos2d中,通過使用 [UIImage imageWithData:[renderer getUIImageAsDataFromBuffer:kCCImageFormatPNG]],可以將CCSprite轉換爲UIImage。 但是,在cocos2d-x中,CCRender沒有getUIImageAsDataFromBuffer這樣的API來執行轉換。我不知道是否有任何可能的方式來將CCSprite轉換爲Cocos2d-x下的UIImage?如何將CCSprite轉換爲cocos2d-x中的UIImage?
2
A
回答
1
CCSprite包含CCTexture2D(可通過getTexture()
訪問),請嘗試使用它。如果沒有更好的方法,您也可以將紋理貼圖到CCImage
,並使用CCImage::saveToFile()
。
0
這裏的UIImage
類我使用去從CCImage
到UIImage
:
#import "UIImage+Conversions.h"
@implementation UIImage (Conversions)
+ (UIImage *) imageFromCCImage:(cocos2d::CCImage *) 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;
}
@end
0
您在有一個方法的UIImageView稱爲loadTexture()
這需要一個文件路徑和轉換文件路徑成圖像將其加載到UIImageView。但這並不是必要的做法,所以我們需要實現哪些需要CCNode新的方法,我用CCNode這裏可以添加CCNode的任何兒童包括CCSprite
void ImageView::addNode(CCNode* node){
if (!node)
{
CCLOG("node is null");
return;
}
CCNode::removeChild(_imageRenderer);
_imageRenderer = NULL;
_textureFile = "";
_imageTexType = UI_TEX_TYPE_PLIST;
_imageRenderer = node;
CCNode::addChild(_imageRenderer, IMAGE_RENDERER_Z, -1);
_imageTextureSize = _imageRenderer->getContentSize();
imageTextureScaleChangedWithSize();
updateAnchorPoint();
updateFlippedY();
updateRGBAToRenderer(_imageRenderer);
_imageRenderer->setPosition(getPosition());
}
此方法刪除並註銷該_imageRenderer屬性,該屬性是一個CCNode用於添加你的圖像在它上面顯示。考慮到你需要在頭文件中添加該方法。
0
你可以這樣做:
CCRenderTextureEx* texture = CCRenderTextureEx::create(size.width, size.height);
texture->setPosition(ccp(size.width * 0.5f, size.height * 0.5f));
texture->begin();
sprite->visit();
texture->end();
texture->saveToFile(path->getCString(), kCCImageFormatPNG);
texture->saveImage();
並使用該自定義類:
您可以生成一個CCSprite到UIImage的。
相關問題
- 1. 如何將ccsprite轉換爲ccimage cocos2dx
- 2. 如何將CCSprite圖像轉換爲UIImage?
- 3. 如何將CCSprite轉換爲UIImage
- 4. 的cocos2d-X轉換的UIImage到CCSprite
- 5. 如何將CCSprite轉換爲CCTexture2d
- 6. CCSprite在COCOS2dx中不作爲物理體?
- 7. 如何將FBProfilePictureView轉換爲UIImage?
- 8. 如何將PHAsset轉換爲UIImage Objective-C
- 9. 如何將CVPixelBuffer轉換爲UIImage?
- 10. 如何將UIView轉換(編輯)爲UIImage?
- 11. 如何將UIView轉換爲UIImage?
- 12. 如何將UIImage轉換爲NSData或CFDataRef?
- 13. 如何將CVImageBuffer轉換爲UIImage?
- 14. 如何將CVImageBufferRef轉換爲UIImage
- 15. 如何將NSData轉換爲UIImage?
- 16. 將jpg UIImage轉換爲位圖UIImage?
- 17. 將NSString轉換爲UIImage
- 18. 將UIImage轉換爲8位
- 19. 將NSData [UIImage]轉換爲NSString
- 20. 將UIImage轉換爲CMSampleBufferRef
- 21. 將CMSampleBufferRef轉換爲UIImage
- 22. 將UIImage轉換爲NSData
- 23. 將uiimage轉換爲binarydata
- 24. 將base64string轉換爲UIImage
- 25. 將UIImage轉換爲字節
- 26. 將字節轉換爲UIImage
- 27. 將UIImage轉換爲CVImageBufferRef
- 28. 將PFFile轉換爲UIImage
- 29. 將CGPath轉換爲UIImage
- 30. 將SKSpriteNode轉換爲UIImage