EXIF जानकारी में दिनांक के अनुसार छवियों को क्रमबद्ध और नाम बदलें


9

मेरे फ़ोटो फ़ोल्डर में गड़बड़ है; मैं उन्हें EXIF ​​जानकारी में तारीख के अनुसार क्रमबद्ध करना चाहता हूं और तारीख के अनुसार नाम बदलकर (जैसे 001.jpg, 002.jpg और इसी तरह)।

मैं लिनक्स में यह कैसे कर सकता हूं? मैंने पहले कुछ बुनियादी थोक प्रसंस्करण कार्यों के लिए ImageMagick का उपयोग किया है (परिवर्तित करना और आकार देना, आदि), क्या इस कार्य के लिए इसका उपयोग करना संभव है?

जवाबों:


21

लिनक्स पर आप कमांड एक्सफोलटूल का उपयोग कर सकते हैं । किसी कारण से ऑनलाइन मैनुअल में "RENAMING EXAMPLES" अनुभाग शामिल नहीं है, जिसने मुझे आवश्यक संकेत दिए।

जेपीजी के लिए केवल निम्न कमांड आह्वान की फाइलें काम करना चाहिए:

exiftool -r '-FileName<CreateDate' -d '%Y-%m-%d/%H_%M_%S%%-c.%%le' <yourFolder>

स्पष्टीकरण:

  • -r पुनरावृत्ति के लिए है
  • '-FileName<CreateDate'Exiftool को इसके EXIF ​​टैग के अनुसार फ़ाइल का नाम बदलने के लिए कहता है CreateDate(आप अन्य लोगों की तरह ModifyDateहालांकि कोशिश कर सकते हैं )
  • -d '%Y-%m-%d/%H_%M_%S%%-c.%%le'दिनांक स्रोत से फ़ाइल नाम स्ट्रिंग बनाने का तरीका बताता है " CreateDate" (" %-c" फ़ाइल टकराव के मामले में एक काउंटर को जोड़ देगा, " %le" का अर्थ "कम आवरण फ़ाइल एक्सटेंशन" है)
    • नोट : मैंने -FileName<...फ़ाइलों का नाम बदलने और इसे एक कदम के भीतर दूसरे फ़ोल्डर में ले जाने के लिए " " का उपयोग किया है । मैनुअल इंगित करता है कि आपको -Directory<...फ़ोल्डर संचालन के लिए " " सिंटैक्स का उपयोग करना होगा। इसने मेरे लिए इस तरह से काम किया।

आपको इस शक्तिशाली उपकरण के मैनुअल को पढ़ने में कुछ समय बिताना चाहिए। शायद वहाँ भी एक छोटा तरीका है: डी


1
प्रलेखन में नाम बदलने के उदाहरण: sno.phy.queensu.ca/~phil/exiftool/…
रवियो


2

सबसे सरल तरीका यह है कि फाइलों को सिर्फ जूटआउट में आयात किया जाए ... तब (वैकल्पिक रूप से) सभी फाइलों के नाम बदलकर कुछ समय उन्मुख हो सकते हैं। या आप पा सकते हैं, कि आपको नाम बदलने की आवश्यकता नहीं है (और जूटआउट पर्याप्त है)।


1

मैंने एक छोटी और बहुत ही अनुकूलित अजगर स्क्रिप्ट नहीं की, जो मुझे लगता है कि आप जो चाहते हैं वह करता है:

1 import pyexiv2, sys, os, time, datetime, random
2 dirname = sys.argv[1]
3 flist=os.listdir(dirname)
4 dic = dict()
5 for fname in flist:
6     metadata = pyexiv2.ImageMetadata(sys.argv[1]+'/'+fname)
7     metadata.read()
8     tag = metadata['Exif.Image.DateTime']
9     timestamp = int(time.mktime(tag.value.timetuple()))
10     #print fname, ' ', tag.value, ' ', timestamp
11     try:
12         dic[timestamp] = fname
13     except:
14         print fname, ' not processed.'
15 
16 keys = dic.keys()
17 keys.sort()
18 i = 0 
19 for k in keys:
20     os.rename(sys.argv[1]+'/'+dic[k], sys.argv[1]+'/'+str(i)+'.jpg')
21     i+=1

आपको इस लाइब्रेरी को तब तक के लिए स्थापित करना होगा जब तक कि http
//

1

डेबियन लेनी में यह काम करने के लिए यह प्रयास करें:

import pyexiv2, sys, os, time, datetime, random
dirname = sys.argv[1]
flist=os.listdir(dirname)
dic = dict()
for fname in flist:
    image = pyexiv2.Image(sys.argv[1]+'/'+fname) 
    #metadata = pyexiv2.ImageMetadata(sys.argv[1]+'/'+fname)
    #metadata.read()
    image.readMetadata() 
    tag = image['Exif.Image.DateTime']
    timestamp = int(time.mktime(tag.timetuple()))
    #print fname, ' ', tag.value, ' ', timestamp
    try:
    dic[timestamp] = fname
    except:
    print fname, ' not processed.'

keys = dic.keys()
keys.sort()
i = 0 
for k in keys:
    os.rename(sys.argv[1]+'/'+dic[k], sys.argv[1]+'/'+str(i)+'.jpg')
    i+=1

1

Php में मैंने कुछ इस तरह किया:

<?php

$path = "./path/to/images";
$files = scandir($path);

foreach ( $files as $file )
{
    if ( $file[0] === "." )
    {
        continue;
    }
    $ext = end(explode(".", $file));

    $suffix = "image";

    $exif = exif_read_data($path."/".$file, 'EXIF');
    $datetime = str_replace("/","-", $exif['DateTimeDigitized']);

    rename($path."/".$file, $path."/".$datetime.$suffix.".".$ext);
}

0

जब हम इस पर होते हैं, तो यहां एक और "गोंजो प्रोग्रामिंग" शैली है, जिसका bashउपयोग करते हुए exiftool, यह एक ही बार में कई निर्देशिकाओं और / या व्यक्तिगत फ़ाइलों पर ढीला हो सकता है। यह उन फ़ाइलों को छोड़ देता है जिनमें अपरिचित माइम प्रकार होते हैं।

यह प्रयोग करके तस्वीरें का नाम बदलता है DateTimeOriginalEXIF टैग (ताकि परिणाम नहीं है 001.jpgलेकिन 2015-12-22_14:43:15.jpg

यदि कोई नामकरण संघर्ष है, तो इंडेक्स नंबर लागू होते हैं 2015-12-22_14:50:57.1.jpg:।

उपयोगी हो सकता है: relabel_photo_with_datetimeoriginal.sh

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.