diff --git a/services/dbms/src/image_compress.cpp b/services/dbms/src/image_compress.cpp index aab452f594f7d6aefa4696abfd3b35dd4e3f8799..894bc16b6454f3f3103b60e427fc94c33994efe0 100644 --- a/services/dbms/src/image_compress.cpp +++ b/services/dbms/src/image_compress.cpp @@ -50,6 +50,8 @@ namespace { constexpr int32_t INDEX_ONE = 1; constexpr int32_t INDEX_TWO = 2; constexpr int32_t INDEX_THREE = 3; + constexpr int32_t EMPTY_FILE_SIZE = 0; + constexpr double FILE_SIZE_ERR = -1.0; } bool ImageCompress::IsPathValid(const std::string &srcPath) { @@ -67,6 +69,9 @@ bool ImageCompress::IsImageNeedCompressBySize(size_t fileSize) double ImageCompress::CalculateRatio(size_t fileSize, const std::string &imageType) { + if (fileSize == EMPTY_FILE_SIZE) { + return FILE_SIZE_ERR; + } if (imageType == WEBP_FORMAT) { return sqrt(static_cast(WEBP_COMPRESS_SIZE) / fileSize); } @@ -155,7 +160,11 @@ bool ImageCompress::CompressImageByContent(const std::unique_ptr &fil return false; } double ratio = CalculateRatio(fileSize, imageType); - APP_LOGE("ratio is %{public}f", ratio); + if (ratio == FILE_SIZE_ERR) { + APP_LOGE("CalculateRatio failed: ratio is %{public}f", ratio); + return false; + } + APP_LOGD("ratio is %{public}f", ratio); pixMap->scale(ratio, ratio); Media::ImagePacker imagePacker; Media::PackOption packOption; diff --git a/services/dbms/test/unittest/distributed_bms_host_test/mock_distributed_bms_interface.cpp b/services/dbms/test/unittest/distributed_bms_host_test/mock_distributed_bms_interface.cpp index 9842231847b434b44321bca905182aa167a53f4c..7a23188113b3a5f7eb28cec924135b4e6c7fe8ae 100644 --- a/services/dbms/test/unittest/distributed_bms_host_test/mock_distributed_bms_interface.cpp +++ b/services/dbms/test/unittest/distributed_bms_host_test/mock_distributed_bms_interface.cpp @@ -78,6 +78,5 @@ int32_t MockDistributedBmsHost::GetDistributedBundleName(const std::string &netw { return 0; } - } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file