diff --git a/frameworks/innerkitsimpl/common/src/pixel_map.cpp b/frameworks/innerkitsimpl/common/src/pixel_map.cpp index 91a4daa5d87e161d36e7a78915dd7ffb9500a4bb..be692867ead68aae77b83493deeceb439ebf24b5 100644 --- a/frameworks/innerkitsimpl/common/src/pixel_map.cpp +++ b/frameworks/innerkitsimpl/common/src/pixel_map.cpp @@ -1634,12 +1634,16 @@ uint32_t PixelMap::crop(const Rect &rect) #ifdef IMAGE_COLORSPACE_FLAG void PixelMap::InnerSetColorSpace(const OHOS::ColorManager::ColorSpace &grColorSpace) { - grColorSpace_ = OHOS::ColorManager::ColorSpace(grColorSpace.ToSkColorSpace()); + grColorSpace_ = std::make_shared(grColorSpace.ToSkColorSpace()); } OHOS::ColorManager::ColorSpace PixelMap::InnerGetGrColorSpace() { - return grColorSpace_; + if (grColorSpace_ == nullptr) { + grColorSpace_ = + std::make_shared(OHOS::ColorManager::ColorSpaceName::SRGB); + } + return *grColorSpace_; } #endif } // namespace Media diff --git a/interfaces/innerkits/include/pixel_map.h b/interfaces/innerkits/include/pixel_map.h index 3720e4be548f3d68c2ea7f0c34721602176ca9c1..88a37c14ea95380d6bc382ae66870c858bc91523 100644 --- a/interfaces/innerkits/include/pixel_map.h +++ b/interfaces/innerkits/include/pixel_map.h @@ -204,8 +204,9 @@ private: bool useSourceAsResponse_ = false; #ifdef IMAGE_COLORSPACE_FLAG - OHOS::ColorManager::ColorSpace grColorSpace_ = - OHOS::ColorManager::ColorSpace(OHOS::ColorManager::ColorSpaceName::SRGB); + std::shared_ptr grColorSpace_ = nullptr; +#else + std::shared_ptr grColorSpace_ = nullptr; #endif }; } // namespace Media