私はにありJintArray
ますJNI
。そこから画像ファイルを作成したいと思います。
現在、その配列をJava側に渡してから、その配列をimageに作成することでイメージを作成しています。ただし、継続して使用すると遅く見えます。
より多くの画像を作成するために、私はそれ自体でそのプロセスを実行したいと思いJNI
ます。
jintArray ret = (*env)->NewIntArray(env, pixels);
(*env)->SetIntArrayRegion(env, ret, 0, pixels, (jint *)pixbuf);
free(pixbuf);
LogD("NBridge: Returning data.");
return ret;
これは私がついにやっていることです。retは私が持っている画像配列です。
Javaコードを編集 して、int[]を画像に変換します
ピクセルは、jniから取得しているint[]です。
Bitmap bmp_ss = Bitmap.createBitmap(bitmap_width,
bitmap_height,
Bitmap.Config.ARGB_8888);
bmp_ss.setPixels(pixels, 0, screen_width,
0, 0, screen_width, screen_height);
Matrix rotator = new Matrix();
switch (rotation) {
case (Surface.ROTATION_0):
break;
case (Surface.ROTATION_90):
rotator.postRotate(0);
break;
case (Surface.ROTATION_180):
rotator.postRotate(180);
break;
case (Surface.ROTATION_270):
rotator.postRotate(0);
break;
bmp_ss = Bitmap.createBitmap(bmp_ss, 0, 0, screen_width, screen_height, rotator, false);
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e) {
throw new InvalidParameterException();
}
bmp_ss.compress(CompressFormat.JPEG, 25, fos);