PIL」タグアーカイブ

Pythonで画像のExif情報を削除する

指定したファイルまたはディレクトリ以下のファイルのExif情報を削除します。

ソースコード1
指定したファイルのExifを削除する

from PIL import Image
from PIL.ExifTags import TAGS
import os

def delete_exif(filename):
image = Image.open(filename)
image_data = image.getdata()
image_mode = image.mode
image_size = image.size

new_image = Image.new(image_mode,image_size)
new_image.putdata(image_data)
old_filename = os.path.splitext(filename)[0]
old_ext = os.path.splitext(filename)[1][1:]
new_file = os.path.join(filename,f"{old_filename}_noexif.{old_ext}")
new_image.save(new_file)
print(f" New file > {new_file}")

def main():
filename = input("path > ")
delete_exif(filename)

return

if __name__ == "__main__":
main()

ソースコード2
指定したディレクトリ以下の「jpg/jpeg」、「png」画像ファイルのExif情報を削除する

from PIL import Image
import os

def main():
print("Exif delete tool")
root_path = input("Directory path > ")

print("Searching...")
for root,dirs,files in os.walk(root_path):
for file in files:
path = os.path.join(root,file)
ext = os.path.splitext(file)[1][1:]
target_ext = ["jpg","jpeg","png"]

if ext in target_ext:
print(f" file > {file}")
image = Image.open(path)
image_data = image.getdata()
image_mode = image.mode
image_size = image.size

new_image = Image.new(image_mode,image_size)
new_image.putdata(image_data)
old_filename = os.path.splitext(file)[0]
old_ext = os.path.splitext(file)[1][1:]
new_file = os.path.join(root,f"{old_filename}_noexif.{old_ext}")
new_image.save(new_file)
print(f" New file > {new_file}")

input("END")
return

if __name__ == "__main__":
main()