From eb9dd73f474b842bacdab7b2d79de4c57f745155 Mon Sep 17 00:00:00 2001 From: WyxGitHub <878459285@qq.com> Date: Wed, 18 Sep 2024 10:03:27 +0800 Subject: [PATCH] fixDrawablePixelMap Signed-off-by: WyxGitHub <878459285@qq.com> --- .../inner_api/drawable_descriptor/image_converter.cpp | 9 +++++++-- .../inner_api/drawable_descriptor/image_source_preview.h | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/interfaces/inner_api/drawable_descriptor/image_converter.cpp b/interfaces/inner_api/drawable_descriptor/image_converter.cpp index 466433bade8..534c17a0d99 100644 --- a/interfaces/inner_api/drawable_descriptor/image_converter.cpp +++ b/interfaces/inner_api/drawable_descriptor/image_converter.cpp @@ -16,6 +16,7 @@ #include "image_converter.h" #include "drawable_descriptor_log.h" +#include "securec.h" #ifndef PREVIEW #include "image_utils.h" #include "platform/image_native/image_type.h" @@ -139,13 +140,17 @@ std::shared_ptr ImageConverter::BitmapToPixelMap( auto data = bitMap->GetPixels(); opts.size.width = static_cast(bitMap->GetWidth()); opts.size.height = static_cast(bitMap->GetHeight()); - opts.editable = true; + opts.editable = false; auto pixelMap = Media::PixelMap::Create(opts); if (!pixelMap) { HILOGE("PixelMap is null, bitMap's Size = (%{public}d, %{public}d)", bitMap->GetWidth(), bitMap->GetHeight()); return pixelMap; } - pixelMap->WritePixels(reinterpret_cast(data), opts.size.width * opts.size.height * sizeof(uint32_t)); + auto dstAddr = pixelMap->GetWritablePixels(); + if (memcpy_s(dstAddr, pixelMap->GetByteCount(), data, pixelMap->GetByteCount()) != 0) { + HILOGE("PixelMap write fail"); + return nullptr; + } return pixelMap; } #endif diff --git a/interfaces/inner_api/drawable_descriptor/image_source_preview.h b/interfaces/inner_api/drawable_descriptor/image_source_preview.h index 4f57528bb43..ddc4a02cff7 100644 --- a/interfaces/inner_api/drawable_descriptor/image_source_preview.h +++ b/interfaces/inner_api/drawable_descriptor/image_source_preview.h @@ -113,7 +113,12 @@ public: return 0; } - uint32_t WritePixels(const uint8_t *source, const uint64_t &bufferSize) + void* GetWritablePixels() + { + return nullptr; + } + + int32_t GetByteCount() { return 0; }