But, when I tried that, it was printed only black.
here is my source
I changed bitmap to byteArray & move at cocos2d part.
then create ccsprite from byteArray
But that was delighted me with black screen…
How can I reslove this problem…?
In java(Cocos2dxActivity.java)
@Override
public void onActivityResult( int requestCode, int resultCode, Intent data )
{
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_PICK_IMAGE:
if (resultCode == RESULT_OK) {
if (data != null) {
String filePath = Environment.getExternalStorageDirectory()
+ "/temp.jpg";
System.out.println("path" + filePath); // logCat으로 경로확인.
Bitmap selectedImage = BitmapFactory.decodeFile(filePath);
if (selectedImage != null){
byte[] pixels = new byte[selectedImage.getWidth() * selectedImage.getHeight() * 4];
ByteBuffer buf = ByteBuffer.wrap(pixels);
buf.order(ByteOrder.nativeOrder());
selectedImage.copyPixelsToBuffer(buf);
mGLView.SendUserImg(pixels, selectedImage.getWidth(), selectedImage.getHeight(), selectedImage.getRowBytes());
}
}
}
break;
}
}
In cpp(main.cpp = glue)
void Java_org_cocos2dx_lib_Cocos2dxGLSurfaceView_nativeSendUserImg( JNIEnv* env, jobject thiz, jint width, jint height, jbyteArray img, jint length )
{
jbyte *b = (jbyte *)env->GetByteArrayElements(img, NULL);
SpriteAlbumData::instance()->set((unsigned char*)b, width, height, length);
env->ReleaseByteArrayElements(img, b, 0 );
}
In cpp(SpriteAlbumData.cpp)
void SpriteAlbumData::set( unsigned char* pData, int width, int height, int length )
{
CCImage* img = new CCImage;
img->initWithImageData(pData, length);
CCTexture2D * tex = new CCTexture2D();
tex->initWithImage(img);
CCSprite *sprite = CCSprite::spriteWithTexture(tex);
m_sprLoaded = Sprite::create(sprite);
m_sprites.push_back(m_sprLoaded);
}