「App:Library:LVGL:docs:Others:Snapshot」の版間の差分
68行目: | 68行目: | ||
Use API <code style="color: #bb0000;">lv_snapshot_free</code> to free the memory it takes. | Use API <code style="color: #bb0000;">lv_snapshot_free</code> to free the memory it takes. | ||
− | This will firstly free memory the image data takes, then the image descriptor. | + | This will firstly free memory the image data takes, then the image descriptor. |
Take caution to free the snapshot but not delete the image object. | Take caution to free the snapshot but not delete the image object. | ||
95行目: | 95行目: | ||
これにより、最初に画像データが使用するメモリが解放され、次に画像記述子が解放されます。 | これにより、最初に画像データが使用するメモリが解放され、次に画像記述子が解放されます。 | ||
+ | |||
スナップショットを解放するように注意してください。 | スナップショットを解放するように注意してください。 | ||
− | ただし、イメージオブジェクトは削除しないでください。<code style="color: #bb0000;">lv_img_set_src(NULL)</code> | + | ただし、イメージオブジェクトは削除しないでください。 |
+ | |||
+ | メモリを解放する前に、必ず<code style="color: #bb0000;">lv_img_set_src(NULL)</code>と<code style="color: #bb0000;">lv_img_cache_invalidate_src(src)</code>を使用して、まず画像オブジェクトからメモリのリンクを解除してください。 | ||
以下のコードスニペットは、このAPIの使用法を説明しています。 | 以下のコードスニペットは、このAPIの使用法を説明しています。 | ||
121行目: | 124行目: | ||
|- | |- | ||
| | | | ||
− | If the snapshot needs update now and then, or simply caller provides memory, use API <code style="color: #bb0000;">lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buff_size);</code> for this case. It's caller's responsibility to alloc/free the memory. | + | If the snapshot needs update now and then, or simply caller provides memory, use API <code style="color: #bb0000;">lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buff_size);</code> for this case. |
+ | |||
+ | |||
+ | It's caller's responsibility to alloc/free the memory. | ||
If snapshot is generated successfully, the image descriptor is updated and image data will be stored to provided <code style="color: #bb0000;">buf</code>. | If snapshot is generated successfully, the image descriptor is updated and image data will be stored to provided <code style="color: #bb0000;">buf</code>. | ||
129行目: | 135行目: | ||
It's recommended to use API <code style="color: #bb0000;">lv_snapshot_buf_size_needed</code> to check the needed buffer size in byte firstly and resize the buffer accordingly. | It's recommended to use API <code style="color: #bb0000;">lv_snapshot_buf_size_needed</code> to check the needed buffer size in byte firstly and resize the buffer accordingly. | ||
− | | | + | |スナップショットを時々更新する必要がある場合、または単に呼び出し元がメモリを提供する場合は、この場合はAPI<code style="color: #bb0000;">lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buff_size);</code>を使用してください。 |
+ | |||
+ | |||
+ | メモリを割り当て/解放するのは発信者の責任です。 | ||
+ | |||
+ | スナップショットが正常に生成されると、イメージ記述子が更新され、イメージデータが提供された<code style="color: #bb0000;">buf</code>に保存されます。 | ||
+ | |||
− | + | 提供されたバッファが十分でない場合、スナップショットが失敗する可能性があることに注意してください。 | |
− | + | これは、オブジェクトサイズが変更されたときに発生する可能性があります。 | |
API<code style="color: #bb0000;">lv_snapshot_buf_size_needed</code>を使用して、最初に必要なバッファサイズをバイト単位で確認し、それに応じてバッファのサイズを変更することをお勧めします。 | API<code style="color: #bb0000;">lv_snapshot_buf_size_needed</code>を使用して、最初に必要なバッファサイズをバイト単位で確認し、それに応じてバッファのサイズを変更することをお勧めします。 |
2022年6月29日 (水) 10:46時点における最新版
https://docs.lvgl.io/8.2/others/snapshot.html
英文 | 自動翻訳 |
---|---|
Snapshot
英文 | 自動翻訳 |
---|---|
Snapshot provides APIs to take snapshot image for LVGL object together with its children. The image will look exactly like the object. |
スナップショットは、LVGLオブジェクトのスナップショットイメージをその子と一緒に取得するためのAPIを提供します。
画像はオブジェクトとまったく同じように見えます。 |
Usage
英文 | 自動翻訳 |
---|---|
Simply call API Note, only below color formats are supported for now:
|
現在、以下のカラーフォーマットのみがサポートされていることに注意してください。
|
Free the Image
英文 | 自動翻訳 |
---|---|
The memory Use API This will firstly free memory the image data takes, then the image descriptor. Take caution to free the snapshot but not delete the image object. Before free the memory, be sure to firstly unlink it from image object, using Below code snippet explains usage of this API. void update_snapshot(lv_obj_t * obj, lv_obj_t * img_snapshot)
{
lv_img_dsc_t* snapshot = (void*)lv_img_get_src(img_snapshot);
if(snapshot) {
lv_snapshot_free(snapshot);
}
snapshot = lv_snapshot_take(obj, LV_IMG_CF_TRUE_COLOR_ALPHA);
lv_img_set_src(img_snapshot, snapshot);
}
|
メモリ API これにより、最初に画像データが使用するメモリが解放され、次に画像記述子が解放されます。
ただし、イメージオブジェクトは削除しないでください。 メモリを解放する前に、必ず 以下のコードスニペットは、このAPIの使用法を説明しています。 void update_snapshot (lv_obj_t * obj 、 lv_obj_t * img_snapshot )
{
lv_img_dsc_t * スナップショット = (void * )lv_img_get_src (img_snapshot )
if (snapshot ) {
lv_snapshot_free (snapshot )
}
スナップショット = lv_snapshot_take (obj 、 LV_IMG_CF_TRUE_COLOR_ALPHA )
lv_img_set_src (img_snapshot 、 snapshot);
}
|
Use Existing Buffer
英文 | 自動翻訳 |
---|---|
If the snapshot needs update now and then, or simply caller provides memory, use API
If snapshot is generated successfully, the image descriptor is updated and image data will be stored to provided
It's recommended to use API |
スナップショットを時々更新する必要がある場合、または単に呼び出し元がメモリを提供する場合は、この場合はAPIlv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buff_size); を使用してください。
スナップショットが正常に生成されると、イメージ記述子が更新され、イメージデータが提供された
これは、オブジェクトサイズが変更されたときに発生する可能性があります。 API |
Example
Simple snapshot example
英文 | 自動翻訳 |
---|---|
API
英文 | 自動翻訳 |
---|---|
Functions *lv_snapshot_take( *obj, cf)
void lv_snapshot_free( *dsc)
uint32_t lv_snapshot_buf_size_needed( *obj, cf)
lv_res_t lv_snapshot_take_to_buf( *obj, cf, *dsc, void *buf, uint32_t buff_size)
|
lv_img_dsc_t * lv_snapshot_take( lv_obj_t * obj、 lv_img_cf_t cf)
void lv_snapshot_free(lv_img_dsc_t * dsc)
uint32_t lv_snapshot_buf_size_needed(lv_obj_t * obj、lv_img_cf_t cf)
lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj、lv_img_cf_t cf、lv_img_dsc_t * dsc、void * buf、uint32_t buff_size)
|