1# drawing_bitmap.h 2 3<!--Kit: ArkGraphics 2D--> 4<!--Subsystem: Graphic--> 5<!--Owner: @hangmengxin--> 6<!--Designer: @wangyanglan--> 7<!--Tester: @nobuggers--> 8<!--Adviser: @ge-yafang--> 9 10## 概述 11 12文件中定义了与位图相关的功能函数。 13 14<!--RP1--> 15**相关示例:** [NDKAPIDrawing (API14)](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Drawing/NDKAPIDrawing)<!--RP1End--> 16 17**引用文件:** <native_drawing/drawing_bitmap.h> 18 19**库:** libnative_drawing.so 20 21**起始版本:** 8 22 23**相关模块:** [Drawing](capi-drawing.md) 24 25## 汇总 26 27### 结构体 28 29| 名称 | typedef关键字 | 描述 | 30| -- | -- | -- | 31| [OH_Drawing_BitmapFormat](capi-drawing-oh-drawing-bitmapformat.md) | OH_Drawing_BitmapFormat | 结构体用于描述位图像素的格式,包括颜色类型和透明度类型。 | 32 33### 函数 34 35| 名称 | 描述 | 36| -- | -- | 37| [OH_Drawing_Bitmap* OH_Drawing_BitmapCreate(void)](#oh_drawing_bitmapcreate) | 用于创建一个位图对象。 | 38| [void OH_Drawing_BitmapDestroy(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapdestroy) | 用于销毁位图对象并回收该对象占有内存。 | 39| [OH_Drawing_Bitmap* OH_Drawing_BitmapCreateFromPixels(OH_Drawing_Image_Info* imageInfo, void* pixels, uint32_t rowBytes)](#oh_drawing_bitmapcreatefrompixels) | 用于创建一个位图对象,并将位图像素存储内存地址设置为开发者申请内存的地址。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>imageInfo、pixels任意一个为NULL或者rowBytes等于0时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 40| [void OH_Drawing_BitmapBuild(OH_Drawing_Bitmap* bitmap,const uint32_t width, const uint32_t height, const OH_Drawing_BitmapFormat* bitmapFormat)](#oh_drawing_bitmapbuild) | 用于初始化位图对象的宽度和高度,并且为该位图设置像素格式。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、bitmapFormat任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 41| [uint32_t OH_Drawing_BitmapGetWidth(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapgetwidth) | 用于获取指定位图的宽度。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 42| [uint32_t OH_Drawing_BitmapGetHeight(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapgetheight) | 用于获取指定位图的高度。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 43| [OH_Drawing_ColorFormat OH_Drawing_BitmapGetColorFormat(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapgetcolorformat) | 用于获取指定位图的像素存储格式。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 44| [OH_Drawing_AlphaFormat OH_Drawing_BitmapGetAlphaFormat(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapgetalphaformat) | 用于获取指定位图的像素透明度分量。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 45| [void* OH_Drawing_BitmapGetPixels(OH_Drawing_Bitmap* bitmap)](#oh_drawing_bitmapgetpixels) | 用于获取指定位图的像素地址,可以通过像素地址获取到位图的像素数据。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 46| [void OH_Drawing_BitmapGetImageInfo(OH_Drawing_Bitmap* bitmap, OH_Drawing_Image_Info* imageInfo)](#oh_drawing_bitmapgetimageinfo) | 用于获取指定位图的信息。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、imageInfo任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 47| [bool OH_Drawing_BitmapReadPixels(OH_Drawing_Bitmap* bitmap, const OH_Drawing_Image_Info* dstInfo,void* dstPixels, size_t dstRowBytes, int32_t srcX, int32_t srcY)](#oh_drawing_bitmapreadpixels) | 将位图中的矩形区域像素数据读取到指定的内存缓冲区中。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、dstInfo、dstPixels任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 | 48 49## 函数说明 50 51### OH_Drawing_BitmapCreate() 52 53``` 54OH_Drawing_Bitmap* OH_Drawing_BitmapCreate(void) 55``` 56 57**描述** 58 59用于创建一个位图对象。 60 61**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 62 63**起始版本:** 8 64 65**返回:** 66 67| 类型 | 说明 | 68| -- | -- | 69| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* | 函数会返回一个指针,指针指向创建的位图对象。 | 70 71### OH_Drawing_BitmapDestroy() 72 73``` 74void OH_Drawing_BitmapDestroy(OH_Drawing_Bitmap* bitmap) 75``` 76 77**描述** 78 79用于销毁位图对象并回收该对象占有内存。 80 81**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 82 83**起始版本:** 8 84 85 86**参数:** 87 88| 参数项 | 描述 | 89| -- | -- | 90| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 91 92### OH_Drawing_BitmapCreateFromPixels() 93 94``` 95OH_Drawing_Bitmap* OH_Drawing_BitmapCreateFromPixels(OH_Drawing_Image_Info* imageInfo, void* pixels, uint32_t rowBytes) 96``` 97 98**描述** 99 100用于创建一个位图对象,并将位图像素存储内存地址设置为开发者申请内存的地址。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>imageInfo、pixels任意一个为NULL或者rowBytes等于0时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 101 102**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 103 104**起始版本:** 12 105 106 107**参数:** 108 109| 参数项 | 描述 | 110| -- | -- | 111| [OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)* imageInfo | 指向图片信息对象[OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)的指针。 | 112| void* pixels | 指向像素存储的内存首地址,内存由开发者申请,保证有效性。 | 113| uint32_t rowBytes | 每行像素的大小,小于等于0时无效。 | 114 115**返回:** 116 117| 类型 | 说明 | 118| -- | -- | 119| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* | 函数返回一个指针,指针指向创建的位图对象[OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)。 | 120 121### OH_Drawing_BitmapBuild() 122 123``` 124void OH_Drawing_BitmapBuild(OH_Drawing_Bitmap* bitmap,const uint32_t width, const uint32_t height, const OH_Drawing_BitmapFormat* bitmapFormat) 125``` 126 127**描述** 128 129用于初始化位图对象的宽度和高度,并且为该位图设置像素格式。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、bitmapFormat任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 130 131**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 132 133**起始版本:** 8 134 135 136**参数:** 137 138| 参数项 | 描述 | 139| -- | -- | 140| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 141| const uint32_t width | 位图要初始化设置的宽度。 | 142| const uint32_t height | 位图要初始化设置的高度。 | 143| const [OH_Drawing_BitmapFormat](capi-drawing-oh-drawing-bitmapformat.md)* bitmapFormat | 位图要初始化设置的像素格式,包括像素的颜色类型和透明度类型。 | 144 145### OH_Drawing_BitmapGetWidth() 146 147``` 148uint32_t OH_Drawing_BitmapGetWidth(OH_Drawing_Bitmap* bitmap) 149``` 150 151**描述** 152 153用于获取指定位图的宽度。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 154 155**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 156 157**起始版本:** 8 158 159 160**参数:** 161 162| 参数项 | 描述 | 163| -- | -- | 164| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 165 166**返回:** 167 168| 类型 | 说明 | 169| -- | -- | 170| uint32_t | 函数返回位图的宽度。 | 171 172### OH_Drawing_BitmapGetHeight() 173 174``` 175uint32_t OH_Drawing_BitmapGetHeight(OH_Drawing_Bitmap* bitmap) 176``` 177 178**描述** 179 180用于获取指定位图的高度。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 181 182**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 183 184**起始版本:** 8 185 186 187**参数:** 188 189| 参数项 | 描述 | 190| -- | -- | 191| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 192 193**返回:** 194 195| 类型 | 说明 | 196| -- | -- | 197| uint32_t | 函数返回位图的高度。 | 198 199### OH_Drawing_BitmapGetColorFormat() 200 201``` 202OH_Drawing_ColorFormat OH_Drawing_BitmapGetColorFormat(OH_Drawing_Bitmap* bitmap) 203``` 204 205**描述** 206 207用于获取指定位图的像素存储格式。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 208 209**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 210 211**起始版本:** 12 212 213 214**参数:** 215 216| 参数项 | 描述 | 217| -- | -- | 218| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 219 220**返回:** 221 222| 类型 | 说明 | 223| -- | -- | 224| [OH_Drawing_ColorFormat](capi-drawing-types-h.md#oh_drawing_colorformat) | 函数返回位图的像素存储格式,支持格式参考[OH_Drawing_ColorFormat](capi-drawing-types-h.md#oh_drawing_colorformat)。 | 225 226### OH_Drawing_BitmapGetAlphaFormat() 227 228``` 229OH_Drawing_AlphaFormat OH_Drawing_BitmapGetAlphaFormat(OH_Drawing_Bitmap* bitmap) 230``` 231 232**描述** 233 234用于获取指定位图的像素透明度分量。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 235 236**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 237 238**起始版本:** 12 239 240 241**参数:** 242 243| 参数项 | 描述 | 244| -- | -- | 245| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 246 247**返回:** 248 249| 类型 | 说明 | 250| -- | -- | 251| [OH_Drawing_AlphaFormat](capi-drawing-types-h.md#oh_drawing_alphaformat) | 函数返回位图的像素透明度分量,支持格式参考[OH_Drawing_AlphaFormat](capi-drawing-types-h.md#oh_drawing_alphaformat)。 | 252 253### OH_Drawing_BitmapGetPixels() 254 255``` 256void* OH_Drawing_BitmapGetPixels(OH_Drawing_Bitmap* bitmap) 257``` 258 259**描述** 260 261用于获取指定位图的像素地址,可以通过像素地址获取到位图的像素数据。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 262 263**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 264 265**起始版本:** 8 266 267 268**参数:** 269 270| 参数项 | 描述 | 271| -- | -- | 272| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象的指针。 | 273 274**返回:** 275 276| 类型 | 说明 | 277| -- | -- | 278| void* | 函数返回位图的像素地址。 | 279 280### OH_Drawing_BitmapGetImageInfo() 281 282``` 283void OH_Drawing_BitmapGetImageInfo(OH_Drawing_Bitmap* bitmap, OH_Drawing_Image_Info* imageInfo) 284``` 285 286**描述** 287 288用于获取指定位图的信息。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、imageInfo任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 289 290**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 291 292**起始版本:** 12 293 294 295**参数:** 296 297| 参数项 | 描述 | 298| -- | -- | 299| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象[OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)的指针。 | 300| [OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)* imageInfo | 指向图片信息对象[OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)的指针。 | 301 302### OH_Drawing_BitmapReadPixels() 303 304``` 305bool OH_Drawing_BitmapReadPixels(OH_Drawing_Bitmap* bitmap, const OH_Drawing_Image_Info* dstInfo,void* dstPixels, size_t dstRowBytes, int32_t srcX, int32_t srcY) 306``` 307 308**描述** 309 310将位图中的矩形区域像素数据读取到指定的内存缓冲区中。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>bitmap、dstInfo、dstPixels任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 311 312**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing 313 314**起始版本:** 12 315 316 317**参数:** 318 319| 参数项 | 描述 | 320| -- | -- | 321| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)* bitmap | 指向位图对象[OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md)的指针。 | 322| const [OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)* dstInfo | 指向图片信息对象[OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md)的指针。 | 323| void* dstPixels | 目标像素存储区域。 | 324| size_t dstRowBytes | 目标像素数据每行的字节数,应大于或等于图片信息对象中的最小每行字节数。 | 325| int32_t srcX | 源位图中读取像素数据的起始x轴坐标,应小于源位图的宽度。 | 326| int32_t srcY | 源位图中读取像素数据的起始y轴坐标,应小于源位图的高度。 | 327 328**返回:** 329 330| 类型 | 说明 | 331| -- | -- | 332| bool | 返回接口调用成功与否的结果。true表示复制成功,false表示复制失败。 |