android 复制bitmap_Android JNI 之 Bitmap 操作

Android JNI 之 Bitmap 操作

在 Android 中通过 JNI 去操作 Bitmap。

在 Android 通过 JNI 去调用 Bitmap,通过 CMake 去编 so 动态链接库的话,需要添加 jnigraphics 图像库。target_link_libraries( # Specifies the target library.                        native-operation                        jnigraphics                        ${log-lib} ) 复制代码

在 Android 中关于 JNI Bitmap 的操作,都定义在 bitmap.h 的头文件里面了,主要就三个函数,明白它们的含义之后就可以去实践体会了。

检索 Bitmap 对象信息

AndroidBitmap_getInfo 函数允许原生代码检索 Bitmap 对象信息,如它的大小、像素格式等,函数签名如下:/**  * Given a java bitmap object, fill out the AndroidBitmapInfo struct for it.  * If the call fails, the info parameter will be ignored.  */ int AndroidBitmap_getInfo(JNIEnv* env, jobject jbitmap,                           AndroidBitmapInfo* info); 复制代码

其中,第一个参数就是 JNI 接口指针,第二个参数就是 Bitmap 对象的引用,第三个参数是指向 AndroidBitmapInfo 结构体的指针。

AndroidBitmapInfo 结构体如下:/** Bitmap info, see AndroidBitmap_getInfo(). */ typedef struct {     /** The bitmap width in pixels. */     uint32_t    width;     /** The bitmap height in pixels. */     uint32_t    height;     /** The number of byte per row. */     uint32_t    stride;     /** The bitmap pixel format. See {@link AndroidBitmapFormat} */     int32_t     format;     /** Unused. */     uint32_t    flags;      // 0 for now } AndroidBitmapInfo; 复制代码

其中,width 就是 Bitmap 的宽,height 就是高,format 就是图像的格式,而 stride 就是每一行的字节数。

图像的格式有如下支持:/** Bitmap pixel format. */ enum AndroidBitmapFormat {     /** No format. */     ANDROID_BITMAP_FORMAT_NONE      = 0,     /** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits. **/     ANDROID_BITMAP_F

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值