1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use jni::objects::JValue; use super::{Bitmap, Env, Object}; pub struct BitmapFactory; impl BitmapFactory { pub fn decode_byte_array(env: &Env, bytes: &[u8]) -> Result<Bitmap, String> { unsafe { let reference = env.call_static_method( "android/graphics/BitmapFactory", "decodeByteArray", "([BII)Landroid/graphics/Bitmap;", &[ JValue::Object(env.byte_array(bytes)), JValue::Int(0), JValue::Int(bytes.len() as i32), ], ); Ok(Bitmap::from_reference( env.retain(env.assume_object(reference)), )) } } }