From 1e914a8360fafb4fbead9bca367d4b6e62a10e5d Mon Sep 17 00:00:00 2001 From: zengyueyang Date: Tue, 18 Jul 2023 15:56:02 +0800 Subject: [PATCH] add exif tag Signed-off-by: zengyueyang --- .../libs/image/libjpegplugin/src/exif_info.cpp | 17 ++++++++++++++++- .../image/libjpegplugin/src/jpeg_decoder.cpp | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/common/libs/image/libjpegplugin/src/exif_info.cpp b/plugins/common/libs/image/libjpegplugin/src/exif_info.cpp index a6b138fda..3081e4ced 100644 --- a/plugins/common/libs/image/libjpegplugin/src/exif_info.cpp +++ b/plugins/common/libs/image/libjpegplugin/src/exif_info.cpp @@ -483,6 +483,8 @@ void EXIFInfo::SetExifTagValues(const ExifTag &tag, const std::string &value) sceneType_ = value; } else if (tag == EXIF_TAG_COMPRESSED_BITS_PER_PIXEL) { compressedBitsPerPixel_ = value; + } else if (tag == EXIF_TAG_USER_COMMENT) { + userComment_ = value; } else { SetExifTagValuesEx(tag, value); } @@ -1109,6 +1111,18 @@ bool EXIFInfo::CreateExifEntry(const ExifTag &tag, ExifData *data, const std::st exif_set_rational((*ptrEntry)->data, order, rat); break; } + case EXIF_TAG_USER_COMMENT: { + *ptrEntry = CreateExifTag(data, EXIF_IFD_EXIF, EXIF_TAG_USER_COMMENT, + value.length(), EXIF_FORMAT_UNDEFINED); + if ((*ptrEntry) == nullptr) { + HiLog::Error(LABEL, "Get exif entry failed."); + return false; + } + if (memcpy_s((*ptrEntry)->data, value.length(), value.c_str(), value.length()) != 0) { + HiLog::Error(LABEL, "User_Comment memcpy error"); + } + break; + } case EXIF_TAG_GPS_LATITUDE: { std::vector latVec; SplitStr(value, ",", latVec); @@ -1650,7 +1664,8 @@ bool EXIFInfo::CheckExifEntryValid(const ExifIfd &ifd, const ExifTag &tag) tag == EXIF_TAG_FNUMBER || tag == EXIF_TAG_ISO_SPEED_RATINGS || tag == EXIF_TAG_SCENE_TYPE || - tag == EXIF_TAG_COMPRESSED_BITS_PER_PIXEL) { + tag == EXIF_TAG_COMPRESSED_BITS_PER_PIXEL || + tag == EXIF_TAG_USER_COMMENT) { ret = true; } break; diff --git a/plugins/common/libs/image/libjpegplugin/src/jpeg_decoder.cpp b/plugins/common/libs/image/libjpegplugin/src/jpeg_decoder.cpp index bb6436f16..96cb7911b 100644 --- a/plugins/common/libs/image/libjpegplugin/src/jpeg_decoder.cpp +++ b/plugins/common/libs/image/libjpegplugin/src/jpeg_decoder.cpp @@ -814,6 +814,8 @@ uint32_t JpegDecoder::GetImagePropertyString(const std::string &key, std::string value = exifInfo_.sceneType_; } else if (IsSameTextStr(key, COMPRESSED_BITS_PER_PIXEL)) { value = exifInfo_.compressedBitsPerPixel_; + } else if (IsSameTextStr(key, USER_COMMENT)) { + value = exifInfo_.userComment_; } else if (IsSameTextStr(key, DATE_TIME)) { value = exifInfo_.dateTime_; } else if (IsSameTextStr(key, GPS_TIME_STAMP)) { @@ -962,6 +964,8 @@ ExifTag JpegDecoder::getExifTagFromKey(const std::string &key) return EXIF_TAG_SCENE_TYPE; } else if (IsSameTextStr(key, COMPRESSED_BITS_PER_PIXEL)) { return EXIF_TAG_COMPRESSED_BITS_PER_PIXEL; + } else if (IsSameTextStr(key, USER_COMMENT)) { + return EXIF_TAG_USER_COMMENT; } else { return EXIF_TAG_PRINT_IMAGE_MATCHING; } -- Gitee