diff --git a/frameworks/js/napi/include/common.h b/frameworks/js/napi/include/common.h index 8fd8ce9ad1cb08865e0e15eb925e869c795cc6d5..f5fb2537a72028426595b7d8af3f08f35b3e162a 100644 --- a/frameworks/js/napi/include/common.h +++ b/frameworks/js/napi/include/common.h @@ -42,6 +42,7 @@ constexpr uint8_t PARAM1 = 1; constexpr uint8_t PARAM2 = 2; constexpr uint8_t PARAM3 = 3; constexpr uint8_t PARAM4 = 4; +constexpr float MAX_PIXEL_SIZE = 128.0f; enum class SemanticActionButton { NONE_ACTION_BUTTON, @@ -1852,6 +1853,7 @@ public: const std::string& value); static napi_value SetObjectUint32Property(const napi_env &env, napi_value& object, const std::string& key, uint32_t value); + static void PictureScale(std::shared_ptr pixelMap); private: static const int32_t ARGS_ONE = 1; static const int32_t ARGS_TWO = 2; diff --git a/frameworks/js/napi/src/common_convert_request.cpp b/frameworks/js/napi/src/common_convert_request.cpp index bf3bbfdba7faef1cbf543d0ca5f91dcab15618b7..0ad27f935df18dcae469232bb75ce3e2d2a79bb8 100644 --- a/frameworks/js/napi/src/common_convert_request.cpp +++ b/frameworks/js/napi/src/common_convert_request.cpp @@ -788,6 +788,7 @@ napi_value Common::GetNotificationSmallIcon(const napi_env &env, const napi_valu ANS_LOGE("Invalid object pixelMap"); return nullptr; } + Common::PictureScale(pixelMap); request.SetLittleIcon(pixelMap); } @@ -818,6 +819,7 @@ napi_value Common::GetNotificationLargeIcon(const napi_env &env, const napi_valu ANS_LOGE("Invalid object pixelMap"); return nullptr; } + Common::PictureScale(pixelMap); request.SetBigIcon(pixelMap); } @@ -849,6 +851,7 @@ napi_value Common::GetNotificationOverlayIcon( ANS_LOGE("Invalid object pixelMap"); return nullptr; } + Common::PictureScale(pixelMap); request.SetOverlayIcon(pixelMap); } @@ -2046,5 +2049,17 @@ napi_value Common::GetNotificationControlFlags( return NapiGetNull(env); } + +void Common::PictureScale(std::shared_ptr pixelMap) +{ + int32_t size = pixelMap->GetByteCount(); + if (size <= MAX_ICON_SIZE) { + return; + } + int32_t width = pixelMap->GetWidth(); + int32_t height = pixelMap->GetHeight(); + float Axis = MAX_PIXEL_SIZE / std::max(width, height); + pixelMap->scale(Axis, Axis, Media::AntiAliasingOption::HIGH); +} } }