A képek tartalma mellé, leírás, dátum, gps pozició, .. adatok is tárolhatok és kiolvashatok.
EXIF : EXchangeable Image File format
Hasznos Modulok:
Exif
Installálás:
install exif
Használata:
from exif import Image
folder_path = r'c:/tmp'
img_filename = 'image_1.jpg'
img_path = f'{folder_path}/{img_filename}'
with open(img_path, 'rb') as img_file:
img = Image(img_file)
print(img.has_exif) ## lista
print(f'Make: {img.get("make")}') ## készítő eszköz neve
print(f'Model: {img.get("model")}') ## készítő eszköz modellje
print(f'DateTime (Original): {img.get("datetime_original")}' ## kép készítési idő
#------- új attributum beállítása (Copyright)
img.copyright = 'Lajos Kecskeméti 2022.01.01'
img.artist = 'Dániel Kecskeméti'
#-------- Attributum törlés
img.delete('artist')
#-------- adatok állományba írása (új könyvtárba)
with open(f'{folder_path}/modified_{img_filename}', 'wb') as new_image_file:
new_image_file.write(img.get_file())
###---------------------------------------------- 2.
image_path = "c:/tmp/IMG_KL_20220073.JPG"
metadata = pyexif.ExifEditor(image_path)
metadata.getTags() ## lista kikérése
metadata.getTag('Aperture') ## érték lekérdezése
metadata.setTag('Aperture', '3.4') ## érték beállítása/módosítása
PIL (https://pypi.org/project/Pillow/)
Installálás:
pip install Pillow ## installálás
pip list ## lista az eddig más installált modulokról
Használás
from PIL import Image
import PIL.ExifTags
img = Image.open(r"c:\Users\User\Downloads\IMG_20211224_170349.jpg")
exif = {
PIL.ExifTags.TAGS[k]: v
for k, v in img._getexif().items()
if k in PIL.ExifTags.TAGS
}
for key in exif:
print(key, '->', exif[key])
ImageWidth -> 2976 ImageLength -> 3968 BitsPerSample -> (8, 8, 8) GPSInfo -> {0: b'\x02\x02\x00\x00', 1: 'N', 2: (47.0, 25.0, 38.772583), 3: 'E', 4: (19.0, 12.0, 29.116516), 5: b'\x00', 6: 178.2, 7: (16.0, 3.0, 49.0), 27: 'CELLID', 29: '2021:12:24'} ResolutionUnit -> 2 ExifOffset -> 284 DeviceSettingDescription -> b'ipp\x00' Make -> HUAWEI Model -> EML-L29 Software -> EML-L29 10.0.0.192(C432E9R1P3) Orientation -> 0 DateTime -> 2021:12:24 17:03:51 YCbCrPositioning -> 1 XResolution -> 72.0 YResolution -> 72.0 ExifVersion -> b'0210' ComponentsConfiguration -> b'\x01\x02\x03\x00' CompressedBitsPerPixel -> 0.95 DateTimeOriginal -> 2021:12:24 17:03:51 DateTimeDigitized -> 2021:12:24 17:03:51 ShutterSpeedValue -> 29.8973
from PIL import Image
from PIL.ExifTags import TAGS
def get_exif(filename):
image = Image.open(filename)
image.verify()
return image._getexif()
def get_labeled_exif(exif):
labeled = {}
for (key, val) in exif.items():
labeled[TAGS.get(key)] = val
return labeled
exif = get_exif(r"c:\Users\User\Downloads\IMG_20211224_170349.jpg")
labeled = get_labeled_exif(exif)
print('GPS pozició: ', labeled['GPSInfo'][2])
print('GPS magasság: ', labeled['GPSInfo'][6] , ' méter')
GPS pozició: (47.0, 25.0, 38.772583) GPS magasság: 178.2 méter
IPTC információ kiolvasása
from PIL import Image, IptcImagePlugin
im = Image.open(r"c:\Users\User\Downloads\elefant_fashegycsucs.jpg")
iptc = IptcImagePlugin.getiptcinfo(im)
if iptc:
for k, v in iptc.items():
print("{} {}".format(k, repr(v.decode())))
else:
print(" This image has no iptc info")
# https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata
def get_caption():
return iptc.get((2,120)).decode()
print(get_caption())
1, 90) '\x1b%G' (1, 0) '\x00\x04' (2, 120) 'Elefánt átmenet kép a felhő felé' (2, 122) 'Elephant' (2, 105) 'Elephant' (2, 80) 'klajosw@gmail.com' (2, 85) 'Lajos Kecskeméti' (2, 110) 'Saját' (2, 115) 'Saját' (2, 5) 'Elefánt kép' (2, 55) '20220101' (2, 90) 'Budapest' (2, 92) 'XVIII' (2, 95) 'PestLőrinc' (2, 101) 'Hungary' (2, 103) '1182' (2, 116) 'Lajos Kecskeméti' Elefánt átmenet kép a felhő feléMinta : https://github.com/klajosw/python/blob/master/kl_py_img_pil.ipynbA hotpot.ai ingyen használható webszolgáltatás kép feldolgozások, ...
Megjegyzések
Megjegyzés küldése