开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 14495|回复: 9
收起左侧

[源码分享] python修改exif信息

[复制链接]
结帖率:93% (115/124)
发表于 2022-11-22 12:39:04 | 显示全部楼层 |阅读模式   吉林省长春市
[Python] 纯文本查看 复制代码
import piexif
from PIL import Image


# date1 = str(time.strftime("%Y:%m:%d %H:%M:%S", time.localtime()))
date1 = '2015:05:05 16:40:25'


def set_photo_exif(path, date):
    print("6666")
    im = Image.open(path)
    exif_dict = piexif.load(im.info["exif"])
    print(exif_dict)
    # 其实就是获取字典 并把字典里的值替换掉
    # exiftest = {'0th': {259: 6, 257: 4032, 271: b'vivo', 274: 0, 306: b'2019:04:26 19:11:06', 34853: 857, 283: (72,
    # 1), 282: (72, 1), 256: 3024, 272: b'vivo X21A', 305: b'sdm660_64-user 8.1.0 OPM1.171019.011
    # eng.compil.20190122.202306 release-keys', 531: 1, 34665: 310, 296: 2}, 'Exif': {37378: (169, 100),
    # 36864: b'0220', 41729: b'?', 37380: (0, 10), 34850: 0, 40961: (65535, 0), 40963: 4032, 37379: (-352, 100),
    # 36867: b'2018:04:26 19:11:06', 40960: b'0100', 37500: b'flower', 37521: b'161801', 41987: 0, 40965: 1070,
    # 41986: 0, 33434: (588, 10000), 37385: 0, 37520: b'161801', 33437: (18000, 10000), 34855: 1031,
    # 37510: b'ASCII\x00\x00\x00NID:SIZE:2.0MB', 40962: 3024, 37121: b'???', 41989: 30, 37522: b'161801',
    # 36868: b'2019:04:26 19:11:06', 37377: (4090, 1000), 37386: (3950, 1000), 37383: 2, 41990: 0, 37384: 0,
    # 41495: 2}, 'GPS': {2: ((43, 1), (53, 1), (26016, 10000)), 6: (0, 1000), 1: b'N', 5: 0, 27: b'NETWORK', 3: b'E',
    # 7: ((11, 1), (11, 1), (5, 1)), 29: b'2019:04:26', 4: ((125, 1), (17, 1), (532895, 10000))}, 'Interop': {1:
    # b'R98'}, '1st': {}, 'thumbnail': None} print(type(exiftest))
    exif_dict['Exif'][36867] = date1
    # exif_dict = {}
    # exif_ifd = {
    #     piexif.ExifIFD.DateTimeOriginal: date,
    #     piexif.ExifIFD.DateTimeDigitized: date,
    # }
    exif_bytes = piexif.dump(exif_dict)
    im = Image.open(path)
    im.save(path, exif=exif_bytes)


if __name__ == '__main__':
    set_photo_exif("C:\\Users\\Administrator\\Desktop\\test\\2.jpg", date1)

评分

参与人数 1好评 +1 精币 +2 收起 理由
果心豆腐酱 + 1 + 2 楼下有我重新修改的代码,加上了代码解读注释,字典解读注释,字典注释放在后面了。.

查看全部评分

结帖率:90% (71/79)

签到天数: 20 天

发表于 2024-8-18 03:19:00 | 显示全部楼层   美国
要是易语言能调用就好了
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 11 天

 楼主| 发表于 2023-10-8 08:32:39 | 显示全部楼层   吉林省长春市

exif_dict['Exif'][271]="我是新的相机厂商"
回复 支持 反对

使用道具 举报

结帖率:93% (248/268)

签到天数: 18 天

发表于 2023-10-7 15:35:09 | 显示全部楼层   广西壮族自治区崇左市
重新修改了下代码,加上了代码解读注释,字典解读注释,字典放在后面了。
这样我这种小白,一看就知道要怎么修改exif了。


  
import os
import piexif
from PIL import Image
#上面报错,说明没有安装模块,打开CMD,输入 pip install piexif Pillow 后回车即可。

orgpath = r ' i:\手机照片\RedmiNote7Pro相册2\小米相机\IMG_20230904_104605.jpg'#需要修改的图片路径
savepath = r ' i:\手机照片\RedmiNote7Pro相册2\小米相机\IMG_20230904_104605_2.jpg'#修改后保存的图片lu'ji
def set_photo_exif (path, path2, Key_Name, Key_Value):
print ("函数调用成功")
im = Image.open (path)  # 打开指定路径的照片
exif_dict = piexif.load (im.info["exif"])  # 获取该照片的原始EXIF信息
print (exif_dict)  # 输出原始EXIF信息
# 通过修改exif_dict字典的键名和键值来改变照片的EXIF信息。
# 具体操作是将exif_dict中的键名为Key_Name的值设置为Key_Value,即修改了照片的EXIF信息。
exif_dict[ ' 0th'][Key_Name] = str(Key_Value).encode('utf-8')

exif_bytes = piexif.dump (exif_dict)  # 将修改后的exif_dict转换为二进制数据exif_bytes

# 创建要保存的目录
save_dir = os.path.dirname (path2)
if not os.path.exists (save_dir):
os.makedirs (save_dir)

# 更新文件路径并保存图片
im.save (path2, exif=exif_bytes)  

if __name__ == ' __main__':#表示如果当前脚本文件被直接执行,则执行该条件下的代码块。
set_photo_exif (orgpath, savepath, 271, "xiaomi5") #调用函数set_photo_exif,并传入参数orgpath、savepath、271和" ;xiaomi5"
# orgpath是原始图片的路径。
# savepath是要保存修改后图片的路径。
# 271是需要修改的EXIF键的名称。
# "xiaomi5"是要设置的新的EXIF键值。
#  {
#     "0th": {
#         "259": 6,                                        // 图片压缩方案:6 (JPEG压缩)
#         "257": 4032,                                     // 图像宽度的像素数:4032像素
#         "271": "vivo",                                   // 设备制造商:"vivo"
#         "274": 0,                                        // 图像方向:0 (未旋转)
#         "306": "2019:04:26 19:11:06",                     // 图像创建时间:"2019年04月26日19时11分06秒"
#         "34853": 857,                                    // 曝光程序:857
#         "283": [72, 1],                                  // 垂直分辨率:72 dpi
#         "282": [72, 1],                                  // 水平分辨率:72 dpi
#         "256": 3024,                                     // 图像高度的像素数:3024像素
#         "272": "vivo X21A",                              // 设备型号:"vivo X21A"
#         "305": "sdm660_64-user 8.1.0 OPM1.171019.011 eng.compil.20190122.202306 release-keys",  // 软件/固件版本信息
#         "531": 1,                                        // YCbCr 位置控制:1
#         "34665": 310,                                    // Exif 版本:310
#         "296": 2                                         // 操作系统:2
#     },
#     "Exif": {
#         "37378": [169, 100],                             // 光圈值:f/1.9
#         "36864": "0220",                                 // 文件变动时间:"2020:02:20"
#         "41729": "?",                                    // Flash 闪光灯状态:?
#         "37380": [0, 10],                                // 快门速度:1/10秒
#         "34850": 0,                                      // 曝光模式:0 (自动曝光)
#         "40961": [65535, 0],                             // 白平衡:自动白平衡
#         "40963": 4032,                                   // 图像高度的像素数:4032像素
#         "37379": [-352, 100],                            // 曝光补偿:-3.52
#         "36867": "2018:04:26 19:11:06",                   // 原始拍摄日期和时间:"2018年04月26日19时11分06秒"
#         "40960": "0100",                                 // 色彩空间:sRGB
#         "37500": "flower",                               // 图片场景:花卉
#         "37521": "161801",                               // 图像唯一标识符:"161801"
#         "41987": 0,                                      // 光线亮度:0
#         "40965": 1070,                                   // 曝光指数:1070
#         "41986": 0,                                      // 感应方式:0
#         "33434": [588, 10000],                           // 快门速度:1/16秒
#         "37385": 0,                                      // 数字变焦倍率:0
#         "37520": "161801",                               // 图像唯一标识符:"161801"
#         "33437": [18000, 10000],                         // 快门速度:1/5秒
#         "34855": 1031,                                   // ISO 速度:1031
#         "37510": "ASCII\x00\x00\x00NID:SIZE:2.0MB",       // ASCII 提示信息:"NID:SIZE:2.0MB"
#         "40962": 3024,                                   // 图像高度的像素数:3024像素
#         "37121": "???",                                  // 厂商自定义信息:"???"
#         "41989": 30,                                     // 感光度类型:30
#         "37522": "161801",                               // 图像唯一标识符:"161801"
#         "36868": "2019:04:26 19:11:06",                   // 创建日期和时间:"2019年04月26日19时11分06秒"
#         "37377": [4090, 1000],                           // 最大光圈值:f/40
#         "37386": [3950, 1000],                           // 闪光灯亮度比例:3.95
#         "37383": 2,                                      // 白平衡模式:手动白平衡
#         "41990": 0,                                      // 打闪状态:0
#         "37384": 0,                                      // 软件变焦倍率:0
#         "41495": 2                                       // 场景拍摄标志:2
#     },
#     "GPS": {
#         "2": [[43, 1], [53, 1], [26016, 10000]],          // 纬度:43°53 ' 2.6016"
#         "6": [0, 1000],                                  // 海拔高度:0米
#         "1": "N",                                        // 纬度参考:"北纬"
#         "5": 0,                                          // GPS定位状态:未定位
#         "27": "NETWORK",                                 // GPS接收方式:"网络接收"
#         "3": "E",                                        // 经度参考:"东经"
#         "7": [[11, 1], [11, 1], [5, 1]],                  // 经度:11°11 ' 0.5"
#         "29": "2019:04:26",                              // GPS日期:"2019年04月26日"
#         "4": [[125, 1], [17, 1], [532895, 10000]]         // 维度:125°17 ' 53.2895"
#     },
#     "Interop": {
#         "1": "R98"                                       // 交换格式适配性:R98
#     },
#     "1st": {},
#     "thumbnail": null                                     // 缩略图:空
# }
回复 支持 反对

使用道具 举报

结帖率:93% (248/268)

签到天数: 18 天

发表于 2023-10-7 13:59:32 | 显示全部楼层   广西壮族自治区崇左市
一一一2 发表于 2023-10-7 13:25
你都没测试吧 代码就是举例子该拍摄日期

那改相机名称呢
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 11 天

 楼主| 发表于 2023-10-7 13:25:29 | 显示全部楼层   吉林省长春市
果心豆腐酱 发表于 2023-10-7 13:19
比如说,修改拍摄时间呢?

你都没测试吧 代码就是举例子该拍摄日期
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 11 天

 楼主| 发表于 2023-10-7 13:25:01 | 显示全部楼层   吉林省长春市
果心豆腐酱 发表于 2023-10-7 13:19
比如说,修改拍摄时间呢?

上面的代码不就是么
回复 支持 反对

使用道具 举报

结帖率:93% (248/268)

签到天数: 18 天

发表于 2023-10-7 13:19:02 | 显示全部楼层   广西壮族自治区崇左市
一一一2 发表于 2023-10-6 21:24
上面代码不就是修改的么

比如说,修改拍摄时间呢?
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 11 天

 楼主| 发表于 2023-10-6 21:24:49 | 显示全部楼层   吉林省长春市

上面代码不就是修改的么
回复 支持 反对

使用道具 举报

结帖率:93% (248/268)

签到天数: 18 天

发表于 2023-10-6 02:56:51 | 显示全部楼层   广西壮族自治区崇左市
问题是,怎么改
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表