From 4e8c906e23fd71e55196853167878ec406874565 Mon Sep 17 00:00:00 2001 From: y30052185 Date: Sat, 13 Sep 2025 15:25:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=84=8F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=97=B6=E5=88=A0=E9=99=A4=E6=99=BA=E6=85=A7=E5=88=86=E6=9E=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: y30052185 --- .../include/thumbnail_generate_helper.h | 2 +- .../media_thumbnail/include/thumbnail_service.h | 3 ++- .../src/thumbnail_generate_helper.cpp | 14 ++++++++++++-- .../media_thumbnail/src/thumbnail_service.cpp | 5 +++-- .../src/service/cloud_media_download_service.cpp | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/frameworks/services/media_thumbnail/include/thumbnail_generate_helper.h b/frameworks/services/media_thumbnail/include/thumbnail_generate_helper.h index 35159ef7a3..be346f0225 100644 --- a/frameworks/services/media_thumbnail/include/thumbnail_generate_helper.h +++ b/frameworks/services/media_thumbnail/include/thumbnail_generate_helper.h @@ -52,7 +52,7 @@ public: int32_t &type); EXPORT static int32_t CheckLcdSizeAndUpdateStatus(ThumbRdbOpt &opts); EXPORT static int32_t RepairExifRotateBackground(ThumbRdbOpt &opts); - EXPORT static int32_t FixThumbnailExifRotateAfterDownloadAsset(ThumbRdbOpt &opts); + EXPORT static int32_t FixThumbnailExifRotateAfterDownloadAsset(ThumbRdbOpt &opts, bool needDeleteFromVisionTables); private: EXPORT static int32_t GetLcdCount(ThumbRdbOpt &opts, int &outLcdCount); diff --git a/frameworks/services/media_thumbnail/include/thumbnail_service.h b/frameworks/services/media_thumbnail/include/thumbnail_service.h index 968ee89507..5db6d7c030 100644 --- a/frameworks/services/media_thumbnail/include/thumbnail_service.h +++ b/frameworks/services/media_thumbnail/include/thumbnail_service.h @@ -85,7 +85,8 @@ public: EXPORT int32_t GetCurrentTemperatureLevel(); EXPORT void CheckLcdSizeAndUpdateStatus(); EXPORT int32_t RepairExifRotateBackground(); - EXPORT int32_t FixThumbnailExifRotateAfterDownloadAsset(const std::string &fileId); + EXPORT int32_t FixThumbnailExifRotateAfterDownloadAsset(const std::string &fileId, + bool needDeleteFromVisionTables = true); private: EXPORT ThumbnailService(); bool CheckSizeValid(); diff --git a/frameworks/services/media_thumbnail/src/thumbnail_generate_helper.cpp b/frameworks/services/media_thumbnail/src/thumbnail_generate_helper.cpp index a1ef8826d2..687f7c5b2a 100644 --- a/frameworks/services/media_thumbnail/src/thumbnail_generate_helper.cpp +++ b/frameworks/services/media_thumbnail/src/thumbnail_generate_helper.cpp @@ -34,6 +34,7 @@ #include "medialibrary_kvstore_manager.h" #include "medialibrary_photo_operations.h" #include "medialibrary_type_const.h" +#include "media_assets_rdb_operations.h" #include "media_file_utils.h" #include "media_image_framework_utils.h" #include "media_log.h" @@ -1138,12 +1139,14 @@ void RepairExifRotateBackgroundTask(std::shared_ptr &data) if (thumbnailData.mediaType == MediaType::MEDIA_TYPE_IMAGE) { MediaImageFrameWorkUtils::GetExifRotate(thumbnailData.path, thumbnailData.exifRotate); if (thumbnailData.exifRotate != static_cast(ExifRotateType::TOP_LEFT)) { + MediaAssetsRdbOperations::DeleteFromVisionTables(thumbnailData.id); ThumbnailUtils::DeleteThumbnailDirAndAstc(opts, thumbnailData); IThumbnailHelper::CreateLcdAndThumbnail(data); } } else { MediaPlayerFrameWorkUtils::GetExifRotate(thumbnailData.path, thumbnailData.exifRotate); if (ExifRotateUtils::IsExifRotateWithFlip(thumbnailData.exifRotate)) { + MediaAssetsRdbOperations::DeleteFromVisionTables(thumbnailData.id); ThumbnailUtils::DeleteThumbnailDirAndAstc(opts, thumbnailData); IThumbnailHelper::CreateLcdAndThumbnail(data); dirtyType = DirtyType::TYPE_FDIRTY; @@ -1188,13 +1191,20 @@ void FixThumbnailExifRotateAfterDownloadAssetTask(std::shared_ptr &data) { + CHECK_AND_RETURN_LOG(data != nullptr, "Data is null"); + MediaAssetsRdbOperations::DeleteFromVisionTables(data->thumbnailData_.id); + FixThumbnailExifRotateAfterDownloadAssetTask(data); + }; + IThumbnailHelper::AddThumbnailGenerateTask( + needDeleteFromVisionTables ? taskWithDeleteFromVisionTables : FixThumbnailExifRotateAfterDownloadAssetTask, opts, data, ThumbnailTaskType::FOREGROUND, ThumbnailTaskPriority::MID); return E_OK; } diff --git a/frameworks/services/media_thumbnail/src/thumbnail_service.cpp b/frameworks/services/media_thumbnail/src/thumbnail_service.cpp index 673aa4699c..96e1e74278 100644 --- a/frameworks/services/media_thumbnail/src/thumbnail_service.cpp +++ b/frameworks/services/media_thumbnail/src/thumbnail_service.cpp @@ -904,14 +904,15 @@ int32_t ThumbnailService::RepairExifRotateBackground() return E_OK; } -int32_t ThumbnailService::FixThumbnailExifRotateAfterDownloadAsset(const std::string &fileId) +int32_t ThumbnailService::FixThumbnailExifRotateAfterDownloadAsset(const std::string &fileId, + bool needDeleteFromVisionTables) { ThumbRdbOpt opts = { .store = rdbStorePtr_, .table = PhotoColumn::PHOTOS_TABLE, .fileId = fileId, }; - int err = ThumbnailGenerateHelper::FixThumbnailExifRotateAfterDownloadAsset(opts); + int err = ThumbnailGenerateHelper::FixThumbnailExifRotateAfterDownloadAsset(opts, needDeleteFromVisionTables); CHECK_AND_RETURN_RET_LOG(err == E_OK, err, "FixThumbnailExifRotateAfterDownloadAsset failed, err: %{public}d", err); return E_OK; } diff --git a/services/media_cloud_sync_service/src/service/cloud_media_download_service.cpp b/services/media_cloud_sync_service/src/service/cloud_media_download_service.cpp index c7e34a7206..8cb7bcd15f 100644 --- a/services/media_cloud_sync_service/src/service/cloud_media_download_service.cpp +++ b/services/media_cloud_sync_service/src/service/cloud_media_download_service.cpp @@ -525,6 +525,6 @@ int32_t CloudMediaDownloadService::CheckRegenerateThumbnail( int32_t fileId = photo.fileId.value_or(0); MEDIA_INFO_LOG("Need regenerate thumbnail, id:%{public}d, exifRotate:%{public}d", fileId, assetData.exifRotate); auto thumbnailService = ThumbnailService::GetInstance(); - return thumbnailService->FixThumbnailExifRotateAfterDownloadAsset(std::to_string(fileId)); + return thumbnailService->FixThumbnailExifRotateAfterDownloadAsset(std::to_string(fileId), false); } } // namespace OHOS::Media::CloudSync \ No newline at end of file -- Gitee