mExiftoolTagA.sh 84 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. #!/bin/bash
  2. E='echo -e';e='echo -en';trap "R;exit" 2
  3. ESC=$( $e "\e")
  4. TPUT(){ $e "\e[${1};${2}H" ;}
  5. CLEAR(){ $e "\ec";}
  6. # 25 возможно это
  7. CIVIS(){ $e "\e[?25l";}
  8. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  9. MARK(){ $e "\e[1;90m";}
  10. # 0 это цвет заднего фона списка
  11. UNMARK(){ $e "\e[0m";}
  12. # ~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~
  13. R(){ CLEAR ;stty sane;CLEAR;};
  14. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. HEAD(){ for (( a=2; a<=41; a++ ))
  16. do
  17. TPUT $a 1
  18. $E "\033[34m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  19. done
  20. TPUT 6 3
  21. $E "\033[1;2mОперации с тегами \033[36mTag operations\033[0m";
  22. TPUT 10 3
  23. $E "\033[36m#\033[0m";
  24. TPUT 39 4
  25. $E "\033[32mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\033[0m";
  26. MARK;TPUT 1 1
  27. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m" ;UNMARK;}
  28. i=0; CLEAR; CIVIS;NULL=/dev/null
  29. FOOT(){ MARK;TPUT 42 1
  30. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  31. # это управляет кнопками ввер/хвниз
  32. i=0; CLEAR; CIVIS;NULL=/dev/null
  33. #
  34. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  35. if [[ $key = $ESC ]];then
  36. read -s -n1 key 2>/dev/null >&2;
  37. if [[ $key = \[ ]]; then
  38. read -s -n1 key 2>/dev/null >&2;
  39. if [[ $key = A ]]; then echo up;fi
  40. if [[ $key = B ]];then echo dn;fi
  41. fi
  42. fi
  43. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  44. M0(){ TPUT 2 3; $e "Извлечь информацию для указанного тега \033[32m -TAG \033[0m";}
  45. M1(){ TPUT 3 3; $e "Исключить указанный тег из извлеченной информации \033[32m --TAG \033[0m";}
  46. M2(){ TPUT 4 3; $e "Напишите новое значение для указанного тега \033[32m -TAG[+-^]=[VALUE] \033[0m";}
  47. M3(){ TPUT 5 3; $e "Примечания: \033[32m Notes: \033[0m";}
  48. M4(){ TPUT 6 3; $e "Установите значение тега из содержимого файла DATFILE \033[32m -TAG<=DATFILE or -TAG<=FMT \033[0m";}
  49. M5(){ TPUT 7 3; $e "Скопируйте значения тегов из SRCFILE в FILE \033[32m -tagsFromFile SRCFILE or FMT \033[0m";}
  50. M6(){ TPUT 8 3; $e "Примечания: \033[32m Notes: \033[0m";}
  51. M7(){ TPUT 9 3; $e "Исключить указанный тег \033[32m -x TAG (-exclude) \033[0m";}
  52. M8(){ TPUT 10 3; $e "Вывести информацию в виде аргументов exiftool \033[32m -args (-argFormat) \033[0m";}
  53. M9(){ TPUT 11 3; $e "Вывести запрошенные метаданные в двоичном формате без имен и описаний тегов\033[32m -b (-binary) \033[0m";}
  54. M10(){ TPUT 12 3; $e "Установите формат печати для координат GPS \033[32m -c FMT (-coordFormat) \033[0m";}
  55. M11(){ TPUT 13 3; $e "Если TYPE - «ExifTool» или не указан \033[32m -charset [[TYPE=]CHARSET] \033[0m";}
  56. M12(){ TPUT 14 3; $e "ТИП Описание По умолчанию ";}
  57. M13(){ TPUT 15 3; $e "Экспорт информации в формате CSV или импорт информации, если указан CSVFILE\033[32m -csv[[+]=CSVFILE] \033[0m";}
  58. M14(){ TPUT 16 3; $e "Установите формат значений тегов даты / времени \033[32m -d FMT (-dateFormat) \033[0m";}
  59. M15(){ TPUT 17 3; $e "Показывать идентификационный номер тега в десятичном формате \033[32m -D (-decimal) \033[0m";}
  60. M16(){ TPUT 18 3; $e "Экранирующие символы выходных тегов для HTML (-E), XML (-ex), C (-ec) \033[32m -E, -ex, -ec (-escapeHTML, -escapeXML, -escapeC)\033[0m";}
  61. M17(){ TPUT 19 3; $e "Принудительная печать тегов, даже если их значения не найдены \033[32m -f (-forcePrint) \033[0m";}
  62. M18(){ TPUT 20 3; $e "Организуйте вывод по группам тегов \033[32m -g[NUM][:NUM...] (-groupHeadings) \033[0m";}
  63. M19(){ TPUT 21 3; $e "То же, что и -g, но вывести имя группы для каждого тега \033[32m -G[NUM][:NUM...] (-groupNames) \033[0m";}
  64. M20(){ TPUT 22 3; $e "Используйте форматирование таблицы HTML для вывода \033[32m -h (-htmlFormat) \033[0m";}
  65. M21(){ TPUT 23 3; $e "Показывать идентификационный номер тега в шестнадцатеричном формате \033[32m -H (-hex) \033[0m";}
  66. M22(){ TPUT 24 3; $e "Создайте динамическую веб-страницу, содержащую шестнадцатеричный дамп EXIF \033[32m -htmlDump[OFFSET] \033[0m";}
  67. M23(){ TPUT 25 3; $e "Используйте форматирование JSON \033[32m -j[[+]=JSONFILE] (-json) \033[0m";}
  68. M24(){ TPUT 26 3; $e "Используйте длинный двухстрочный выходной формат в стиле Canon \033[32m -l (-long) \033[0m";}
  69. M25(){ TPUT 27 3; $e "Установите текущий язык для описаний тегов и преобразованных значений \033[32m -lang [LANG] \033[0m";}
  70. M26(){ TPUT 28 3; $e "Для тегов типа списка это приводит к извлечению элемента с индексом \033[32m -listItem INDEX \033[0m";}
  71. M27(){ TPUT 29 3; $e "Отключите преобразование печати для всех тегов \033[32m -n (--printConv) \033[0m";}
  72. M28(){ TPUT 30 3; $e "Вывод на печать в формате, заданном данным файлом или строкой \033[32m -p FMTFILE or STR (-printFormat) \033[0m";}
  73. M29(){ TPUT 31 3; $e "Отформатируйте вывод как массив PHP \033[32m -php \033[0m";}
  74. M30(){ TPUT 32 3; $e "Короткий выходной формат \033[32m -s[NUM] (-short) \033[0m";}
  75. M31(){ TPUT 33 3; $e "Очень короткий формат \033[32m -S (-veryShort) \033[0m";}
  76. M32(){ TPUT 34 3; $e "Укажите разделительную строку для элементов в тегах типа списка \033[32m -sep STR (-separator) \033[0m";}
  77. M33(){ TPUT 35 3; $e "Сортировать вывод по описанию тега или по имени тега \033[32m -sort, --sort \033[0m";}
  78. M34(){ TPUT 36 3; $e "Вывод структурированной информации XMP вместо объединения в отдельные теги \033[32m -struct, --struct \033[0m";}
  79. M35(){ TPUT 37 3; $e "Вывести список описаний / значений, разделенных табуляцией \033[32m -t (-tab) \033[0m";}
  80. M36(){ TPUT 38 3; $e "Вывести значения тегов в виде таблицы. Эквивалентно -t -S -q -f \033[32m -T (-table) \033[0m";}
  81. #
  82. M37(){ TPUT 40 3; $e "Далее \033[32m Onward \033[0m";}
  83. M38(){ TPUT 41 3; $e "Выход \033[32m EXIT \033[0m";}
  84. LM=38
  85. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  86. POS(){ if [[ $cur == up ]];then ((i--));fi
  87. if [[ $cur == dn ]];then ((i++));fi
  88. if [[ $i -lt 0 ]];then i=$LM;fi
  89. if [[ $i -gt $LM ]];then i=0;fi;}
  90. REFRESH(){ after=$((i+1)); before=$((i-1))
  91. if [[ $before -lt 0 ]];then before=$LM;fi
  92. if [[ $after -gt $LM ]];then after=0;fi
  93. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  94. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  95. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  96. INIT(){ R;HEAD;FOOT;MENU;}
  97. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  98. # Функция возвращения в меню
  99. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  100. while [[ "$O" != " " ]]; do case $i in
  101. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo " Извлечь информацию для указанного тега (например, «-CreateDate»). В одной команде можно указать несколько тегов. Имя тега - это дескриптор, с помощью которого дана
  102. ссылка на часть информации. См. В Image :: ExifTool :: TagNames документацию по доступным именам тегов. Имя тега может включать ведущую группу имена, разделенные
  103. двоеточиями (например, «-EXIF: CreateDate» или «-Doc1: XMP: Creator»), и каждое имя группы может быть предварено цифрой, чтобы указать номер семейства (например,
  104. «-1IPTC: Город»). Используйте параметр -listg, чтобы перечислить доступные имена групп по семействам.
  105. Специальное имя тега «Все» может использоваться для обозначения всей метаинформации (т. Е. -Все). Это особенно полезно, когда имя группы указано для извлекать всю
  106. информацию в группе (но имейте в виду, что, если также не используется опция -a, некоторые теги в группе могут быть подавлены тегами с тем же именем в другие
  107. группы). Подстановочные знаки \"?\" и «*» могут использоваться в имени тега для соответствия любому одиночному символу и нулю или более символам соответственно.
  108. Их нельзя использовать в имени группы, за исключением того, что имя группы «*» (или «Все») может использоваться для извлечения всех экземпляров тега (как если бы -a
  109. было использовано). Обратите внимание, что аргументы, содержащие подстановочные знаки, должны быть заключены в кавычки в командной строке большинства систем, чтобы
  110. предотвратить подстановку команд оболочки.
  111. К имени тега можно добавить \"#\", чтобы отключить преобразование печати для каждого тега (см. Параметр -n). Это также можно использовать при написании или
  112. копирование тегов. Если теги не указаны, извлекается вся доступная информация (как если бы было указано «-All»).
  113. Примечание. При извлечении информации по умолчанию отображаются описания, а не имена тегов. Вместо этого используйте параметр -s, чтобы увидеть имена тегов.";ES;fi;;
  114. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo " Исключить указанный тег из извлеченной информации. То же, что и опция -x. Имена групп и подстановочные знаки разрешены, как описано выше для -TAG. Один раз
  115. исключенный из вывода, тег не может быть повторно включен с помощью последующей опции. Также может использоваться после параметра -tagsFromFile для исключения тегов
  116. из копируемые (при перенаправлении на другой тег следует исключить именно исходный тег) или исключить группы из удаляемых при удалении вся информация (например,
  117. «-all = --exif: all» удаляет всю информацию, кроме EXIF). Но учтите, что это не исключает отдельные теги из группового удаления (если не указана группа «семья 2»,
  118. см. примечание 4 ниже). Вместо этого отдельные теги можно восстановить с помощью параметра -tagsFromFile (например, \"-all = -tagsfromfile @ -artist \").";ES;fi;;
  119. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo " Напишите новое значение для указанного тега (например, «-comment = wow») или удалите тег, если ЗНАЧЕНИЕ не указано (например, «-comment =»). \"+ =\" и \"- =\"
  120. используются для добавления либо удалить существующие записи из списка, либо сдвинуть значения даты / времени (см. Image :: ExifTool :: Shift.pl и примечание 6 ниже
  121. для более подробной информации). \"+ =\" может также использоваться для увеличения числовых значений (или уменьшения, если VALUE отрицательное), а \"- =\" может
  122. использоваться для условного удаления или замены тега (см.WRITING ПРИМЕРЫ для примеров).\" ^ = \" Используется для записи пустой строки вместо удаления тега, когда
  123. не задано ЗНАЧЕНИЕ, но в остальном это эквивалентно знак равно.
  124. TAG может содержать одно или несколько ведущих имен групп семейств 0, 1, 2 или 7 с префиксом необязательных номеров семейств и разделенных двоеточиями. Если имя
  125. группы не указано, тег создается в предпочтительной группе и обновляется в любом другом месте, где уже существует тег с таким же именем. Предпочтительная группа
  126. первая группа в следующем списке, где действителен TAG: 1) EXIF, 2) IPTC, 3) XMP.
  127. Подстановочные знаки «*» и «?» может использоваться в именах тегов для присвоения одного и того же значения нескольким тегам. При указании с использованием
  128. подстановочных знаков \"небезопасные\" теги не являются написано. Имя тега «Все» эквивалентно «*» (за исключением того, что оно не требует заключения в кавычки, в
  129. то время как аргументы с подстановочными знаками требуются в системах с оболочкой globbing) и часто используется при удалении всех метаданных (например, «-All =»)
  130. или всей группы (например, «-XMP-dc: All =», см. примечание 4 ниже). Обратите внимание, что не все группы можно удалить, и что группа JPEG APP14 «Adobe» не удаляется
  131. по умолчанию с помощью «-All =», поскольку это может повлиять на внешний вид изображения.
  132. Однако информация о цветовом пространстве удаляется, поэтому цвета могут быть затронуты (но этого можно избежать, скопировав обратно теги, определенные
  133. ColorSpaceTags ярлык). Используйте параметр -listd для получения полного списка удаляемых групп и см. Примечание 5 ниже относительно групп «APP». Также, в
  134. изображении некоторые группы могут содержаться в других, и эти группы удаляются, если удаляется содержащая группа:
  135. Изображение JPEG:
  136. - Удаление EXIF или IFD0 также удаляет ExifIFD, GlobParamIFD, GPS, IFD1, InteropIFD, MakerNotes, PrintIM и SubIFD.
  137. - Удаление ExifIFD также удаляет InteropIFD и MakerNotes.
  138. - При удалении Photoshop также удаляется IPTC.
  139. Изображение TIFF:
  140. - Удаление EXIF удаляет только ExifIFD, который также удаляет InteropIFD и MakerNotes.";ES;fi;;
  141. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo " 1) В одной команде может быть присвоено множество значений тегов. Если два назначения влияют на один и тот же тег, последний имеет приоритет (за исключением типа
  142. списка теги, для которых записаны оба значения).
  143. 2) Как правило, теги MakerNotes считаются «постоянными» и могут редактироваться, но не могут быть созданы или удалены по отдельности. Это позволяет избежать многих
  144. потенциальных проблемы, включая неизбежные проблемы совместимости с программным обеспечением OEM, которое может быть очень негибким в отношении информации, которую
  145. он ожидает найти в производитель отмечает.
  146. 3) Изменения файлов PDF с помощью ExifTool обратимы (путем удаления обновления с помощью -PDF-update: all =), поскольку исходная информация никогда не является
  147. удален из файла. Таким образом, только ExifTool нельзя использовать для безопасного редактирования метаданных в файлах PDF.
  148. 4) Указание «-GROUP: all =» удаляет всю группу как блок, только если указано одно семейство 0 или 1 группа. В противном случае все удаляемые теги в указанные группы
  149. удаляются индивидуально, и в этом случае можно исключить отдельные теги из массового удаления. Например, «-time: all --Exif: Time: All» удаляет все удаляемые теги
  150. времени, кроме тех, что находятся в EXIF. Это различие также применяется, если семейство 2 указано, когда удаление всех групп. Например, «-2all: all =» удаляет теги
  151. по отдельности, а «-all: all =» удаляет целые блоки.
  152. 5) Имена групп «APP» (от «APP0» до «APP15») используются для удаления сегментов приложения JPEG, которые не связаны с другой удаляемой группой.
  153. Например, указание «-APP14: All =» НЕ удалит сегмент «Adobe» APP14, потому что это выполняется с помощью «-Adobe: All».
  154. 6) При сдвиге значения сдвиг применяется к исходному значению тега, отменяя любые другие значения, ранее присвоенные тегу на та же командная строка. Чтобы сдвинуть
  155. значение даты / времени и скопировать его в другой тег в той же операции, используйте параметр -globalTimeShift.
  156. Особенность: Целочисленные значения могут быть указаны в шестнадцатеричном формате с начальным «0x», а простые рациональные значения могут быть указаны как дроби.";ES;fi;;
  157. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo " Установите значение тега из содержимого файла DATFILE. Имя файла также может быть задано строкой FMT, где% d,% f и% e представляют каталог, имя файла и расширение
  158. исходного ФАЙЛА (подробнее см. параметр -w). Обратите внимание, что этот аргумент требуется в кавычках предотвратить перенаправление оболочки, так как она содержит
  159. символ «<». Если DATFILE / FMT не указан, эффект будет таким же, как и -TAG = и тег будет просто удалено. «+ <=» или «- <=» также могут использоваться для добавления
  160. или удаления определенных записей списка или для сдвига значений даты / времени.";ES;fi;;
  161. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo "
  162. Скопируйте значения тегов из SRCFILE в FILE. Имена тегов в командной строке после этой опции указывают теги, которые нужно скопировать или исключить из копии.
  163. В именах этих тегов разрешены подстановочные знаки. Если теги не указаны, то все возможные теги (см. Примечание 1 ниже) из исходного файла копируются в одноименные
  164. теги в предпочтительном месте выходного файла (то же самое, что и при указании «-all»). Для копирования можно использовать более одной опции -tagsFromFile теги из
  165. нескольких файлов.
  166. По умолчанию этот параметр обновит все существующие и доступные для записи теги с тем же именем в выходном ФАЙЛЕ, но создаст новые теги только в их
  167. предпочтительных группы. Это позволяет автоматически передавать некоторую информацию в соответствующую группу при копировании между изображениями разных форматов.
  168. Однако, если для тега указано имя группы, информация записывается только в эту группу (если не перенаправляется в другую группу, см. Ниже). Если в качестве имени
  169. группы используется \"All\", то указанные теги записываются в ту же группу семейства 1, что и в исходном файле (т. Е. Те же конкретные расположение, например
  170. ExifIFD или XMP-dc). Например, обычная операция копирования всех доступных для записи тегов в одни и те же конкретные места в выходном ФАЙЛЕ достигается добавлением
  171. «-all: all». Другое семейство может быть указано путем добавления ведущего номера семейства к имени группы (например, \"-0all: all\" сохраняет такое же общее
  172. расположение, как EXIF ​​или XMP).
  173. SRCFILE может быть тем же, что и FILE для перемещения информации внутри одного файла. В этом случае \"@\" может использоваться для представления исходного файла
  174. (т. Е. \"-tagsFromFile @\"), что позволяет использовать эту функцию для пакетной обработки нескольких файлов. Указанные теги затем копируются из каждого файла по
  175. очереди как он переписан. Для расширенного пакетного использования имя исходного файла также может быть указано с помощью строки FMT, в которой% d,% f и% e
  176. представляют каталог, имя файла и расширение FILE. (например, текущий ФАЙЛ будет представлен как «% d% f.% e» с тем же эффектом, что и «@»). См. Параметр -w для
  177. примеров строк FMT.
  178. Мощная функция перенаправления позволяет указывать тег назначения для каждого скопированного тега. С помощью этой функции информация может быть записана в тег
  179. с другим именем или группой. Это делается с помощью \"'-DSTTAG <SRCTAG'\" или \"'-SRCTAG> DSTTAG'\" в командной строке после -tagsFromFile и вызывает значение
  180. SRCTAG, которое будет скопировано из SRCFILE и записано в DSTTAG в FILE. Не действует, если SRCTAG не существует в SRCFILE. Обратите внимание, что этот аргумент
  181. должен заключаться в кавычки, чтобы предотвратить перенаправление оболочки, и отсутствует знак \"=\", как при присвоении новых значений. Теги источника и / или
  182. назначения могут иметь префикс название группы и / или с суффиксом \"#\". Подстановочные знаки разрешены в именах как исходных, так и целевых тегов. Группа
  183. назначения и / или имя тега \"All\" или \"*\" записывается в ту же группу и / или имя тега семейства 1, что и источник. Если группа назначения не указана, информация
  184. записывается в предпочтительная группа. Пробелы вокруг \">\" или \"<\" игнорируются. Для удобства предполагается, что для любых перенаправляемых тегов, которые
  185. являются указан без предшествующей опции -tagsFromFile. Скопированные теги также могут быть добавлены или удалены из списка с аргументами вида \"'-SRCTAG + <DSTTAG'\"
  186. или \"'-SRCTAG- <DSTTAG'\" (но см. Примечание 5 ниже).
  187. Расширение функции перенаправления позволяет использовать строки, содержащие имена тегов, с правой стороны символа «<» с синтаксисом «'-DSTTAG <STR'», где имена
  188. тегов в STR начинаются с символа «$». См. Параметр -p и раздел «Расширенное форматирование» для получения дополнительной информации подробности об этом синтаксисе.
  189. Строки, начинающиеся со знака «=», должны содержать один пробел после «<», чтобы избежать путаницы с оператором «<=», который устанавливает значение тега из
  190. содержимого файла. Один пробел в начале строки удаляется, если он существует, но все остальные пробелы в строка сохраняется. См. Примечание 8 ниже об использовании
  191. функции перенаправления с тегами типа списка, ярлыками или при использовании подстановочных знаков в именах тегов.
  192. См. «КОПИРОВАНИЕ ПРИМЕРОВ» для примеров использования -tagsFromFile.
  193. ";ES;fi;;
  194. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo " 1) Некоторые теги (обычно теги, которые могут влиять на внешний вид изображения) считаются небезопасными для записи и копируются только в том случае, если они
  195. указаны явно (т. е. без подстановочных знаков). Дополнительную информацию о «небезопасных» тегах см. В документации по именам тегов.
  196. 2) Помните о разнице между исключением тега из копирования (--TAG) и удалением тега (-TAG =). Исключение тега предотвращает его копируется в целевое изображение,
  197. но при удалении из изображения удаляется уже существующий тег.
  198. 3) Информация о создателе копируется как блок, поэтому последующие присвоения тегов в командной строке не влияют на нее, как на другую информацию, и отдельные
  199. теги makernote не могут быть исключены из блочной копии. Кроме того, поскольку PreviewImage, на который есть ссылка в заметках создателя, может быть довольно
  200. большим, он не копируется и при желании должен быть передан отдельно.
  201. 4) Порядок операций - скопировать все указанные теги в точку параметра -tagsFromFile в командной строке. Любое присвоение тега справа от опции -tagsFromFile
  202. ставится после копирования всех тегов. Например, новые значения тегов устанавливаются в порядке «Один», «Два», «Три», затем «Четыре» с эта команда:
  203. exiftool -One = 1 -tagsFromFile s.jpg -Two -Four = 4 -Three d.jpg Это важно в том случае, когда существует перекрытие между скопированными и назначенными тегами,
  204. потому что более поздние операции могут переопределить более ранние.
  205. 5) Нормальное поведение скопированных тегов отличается от поведения назначенных тегов для тегов типа списка и условных замен, поскольку каждая операция копирования
  206. на теге отменяет любые предыдущие операции. Хотя это позволяет избежать дублирования элементов списка при копировании групп тегов из файла, содержащего избыточные
  207. информации, он также предотвращает копирование значений разных тегов в один и тот же список, когда это является намерением. Итак, параметр -addTagsFromFile - это
  208. при условии, что позволяет копировать несколько тегов в один и тот же список. например) exiftool -addtagsfromfile @ '-subject <make' '-subject <model' ...
  209. Точно так же -addTagsFromFile необходимо использовать при условной замене тега, чтобы предотвратить переопределение более ранних условий.
  210. Помимо этих различий, параметры -tagsFromFile и -addTagsFromFile эквивалентны.
  211. 6) Параметр -a (разрешить дублирование тегов) всегда действует при копировании тегов из SRCFILE, но тег с наивысшим приоритетом всегда копируется последним,
  212. поэтому он имеет приоритет.
  213. 7) Структурированные теги по умолчанию копируются при копировании тегов. Подробнее см. Параметр -struct.
  214. 8) При использовании функции перенаправления прямое копирование тега (т. Е. «'-DSTTAG <SRCTAG'») не то же самое, что интерполяция его значения внутри строки
  215. (т. Е. '-DSTTAG <$ SRCTAG') для тегов типа списка, ярлыков, имен тегов, содержащих подстановочные знаки, или переменных UserParam. При прямом копировании значения
  216. каждый соответствующий исходный тег копируется отдельно в целевой тег (как если бы они были отдельными назначениями). Однако при интерполяции внутри строка,
  217. элементы списка и значения ярлыков объединяются (с разделителем, установленным параметром -sep), а использование подстановочных знаков не допускается. Также,
  218. Переменные UserParam доступны только при интерполяции в строку. Другое отличие состоит в том, что если тег не существует, выдается небольшое предупреждение при
  219. интерполяции его значения в строку (с «\$»), но не при прямом копировании тега.
  220. Наконец, поведение отличается при использовании тега назначения или группы «Все». При копировании напрямую группа назначения и / или имя тега «Все» записывается
  221. в ту же группу и / или имя тега семейства 1, что и источник. Но при интерполяции в строку идентичность исходных тегов теряется и значение записывается во все
  222. возможные группы / теги. Например, строковая форма должна использоваться в следующей команде, поскольку цель состоит в том, чтобы установить значение всех
  223. существующих тегов даты / времени из CreateDate: exiftool \"-time:all<$createdate\" -wm w FILE";ES;fi;;
  224. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " Исключить указанный тег. Может быть несколько параметров -x. Это имеет тот же эффект, что и --TAG в командной строке. См. Документацию --TAG выше для полного
  225. описания. Форматирование текста ввода-вывода. Обратите внимание, что конечные пробелы удаляются из извлеченных значений для большинства выходных текстовых форматов.
  226. Исключения составляют «-b», «-csv», «-j» и «-X».";ES;fi;;
  227. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo " Вывести информацию в виде аргументов exiftool, подходящих для использования с опцией - @ при записи. Можно комбинировать с опцией -G для включения названия групп.
  228. Эта функция может использоваться для эффективного копирования тегов между изображениями, но позволяет изменять метаданные путем редактирования промежуточного файла.
  229. (out.args в этом примере): exiftool -args -G1 --filename --directory src.jpg> out.args
  230. exiftool - @ out.args -sep "," dst.jpg
  231. Примечание: будьте осторожны при копировании информации с помощью этого метода, так как легко писать теги, которые обычно считаются «небезопасными». Например,
  232. теги FileName и Directory исключены в приведенном выше примере, чтобы избежать переименования и перемещения файла назначения. Также обратите внимание, что второй
  233. приведенная выше команда будет выдавать предупреждающие сообщения для любых тегов, которые недоступны для записи.
  234. Кроме того, следует использовать параметр -sep, как и во второй команде выше, чтобы поддерживать отдельные элементы списка при записи метаданных обратно в файлы
  235. изображений, и параметр -struct может использоваться при извлечении для сохранения структурированной информации XMP.";ES;fi;;
  236. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo " Вывести запрошенные метаданные в двоичном формате без имен и описаний тегов. Этот параметр в основном используется для извлечения встроенных изображений или других
  237. двоичные данные, но это также может быть полезно для некоторых текстовых строк, поскольку управляющие символы (например, новые строки) не заменяются на '.' как они в
  238. вывод по умолчанию. По умолчанию элементы списка разделяются новой строкой при извлечении с помощью параметра -b, но это можно изменить (см. Параметр -sep для
  239. Детали). Можно комбинировать с «-j», «-php» или «-X» для извлечения двоичных данных в формате JSON, PHP или XML, но обратите внимание, что необходимо указать
  240. «небезопасные» теги явно быть извлеченным как двоичный файл в этих форматах.";ES;fi;;
  241. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo "
  242. Установите формат печати для координат GPS. FMT использует тот же синтаксис, что и строка формата printf. Спецификаторы соответствуют градусам, минутам и секунд
  243. в таком порядке, но минуты и секунды указывать необязательно. Например, в следующей таблице приведены выходные данные для одной и той же координаты с использованием
  244. различных форматы:
  245. FMT Output
  246. ------------------- ------------------
  247. \"%d deg %d' %.2f\"\\ 54 deg 59' 22.80\" (по умолчанию для чтения)
  248. \"%d %d %.8f\" 54 59 22.80000000 (по умолчанию для копирования)
  249. \"%d deg %.4f min\" 54 deg 59.3800 min
  250. \"%.6f degrees\" 54.989667 degrees
  251. Примечания:
  252. 1) Чтобы избежать потери точности, формат координат по умолчанию отличается при копировании тегов с помощью параметра -tagsFromFile.
  253. 2) Если полушарие известно, опорное направление (N, S, E или W) добавляется к каждой напечатанной координате, но с добавлением \"+\" к спецификатору формата.
  254. (например, "% +. 6f") вместо этого печатает координату со знаком.
  255. 3) Это форматирование печати можно отключить с помощью опции -n для извлечения координат в виде десятичных градусов со знаком.
  256. ";ES;fi;;
  257. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo "
  258. Если TYPE - «ExifTool» или не указан, этот параметр устанавливает кодировку символов ExifTool для значений тегов вывода при чтении и значений ввода, когда запись
  259. со значением по умолчанию UTF8. Если CHARSET не указан, возвращается список доступных наборов символов. Допустимые значения CHARSET:
  260. CHARSET Alias(es) Description
  261. ---------- --------------- ----------------------------------
  262. UTF8 cp65001, UTF-8 UTF-8 characters (default)
  263. Latin cp1252, Latin1 Windows Latin1 (West European)
  264. Latin2 cp1250 Windows Latin2 (Central European)
  265. Cyrillic cp1251, Russian Windows Cyrillic
  266. Greek cp1253 Windows Greek
  267. Turkish cp1254 Windows Turkish
  268. Hebrew cp1255 Windows Hebrew
  269. Arabic cp1256 Windows Arabic
  270. Baltic cp1257 Windows Baltic
  271. Vietnam cp1258 Windows Vietnamese
  272. Thai cp874 Windows Thai
  273. DOSLatinUS cp437 DOS Latin US
  274. DOSLatin1 cp850 DOS Latin1
  275. DOSCyrillic cp866 DOS Cyrillic
  276. MacRoman cp10000, Roman Macintosh Roman
  277. MacLatin2 cp10029 Macintosh Latin2 (Central Europe)
  278. MacCyrillic cp10007 Macintosh Cyrillic
  279. MacGreek cp10006 Macintosh Greek
  280. MacTurkish cp10081 Macintosh Turkish
  281. MacRomanian cp10010 Macintosh Romanian
  282. MacIceland cp10079 Macintosh Icelandic
  283. MacCroatian cp10082 Macintosh Croatian
  284. TYPE может быть «FileName», чтобы указать кодировку имен файлов в командной строке (т. Е. Аргументы FILE). В Windows это вызывает использование широкого
  285. подпрограммы ввода-вывода символов, таким образом обеспечивая поддержку имен файлов Unicode. Подробности см. В разделе «ИМЕНА ФАЙЛОВ WINDOWS UNICODE» ниже.
  286. Другие значения TYPE, перечисленные ниже, используются для определения внутреннего кодирования различных форматов метаинформации.
  287. ";ES;fi;;
  288. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo " ТИП Описание По умолчанию
  289. ----------------------------------------------------------
  290. EXIF Внутренняя кодировка строк EXIF ​ASCII (нет)
  291. ID3 Внутренняя кодировка информации ID3v1 латиницей
  292. IPTC Внутренняя кодировка IPTC, которая предполагается при использовании латиницы.
  293. IPTC: CodedCharacterSet не определен
  294. Photoshop Внутренняя кодировка строк Photoshop IRB Latin
  295. QuickTime Внутренняя кодировка строк QuickTime MacRoman
  296. RIFF Внутреннее кодирование строк RIFF 0
  297. См. Https://exiftool.org/faq.html#Q10 для получения дополнительной информации о наборах кодированных символов и параметры Image :: ExifTool для получения
  298. дополнительных сведений о -charset настройки.";ES;fi;;
  299. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo " Экспорт информации в формате CSV или импорт информации, если указан CSVFILE. При импорте файл CSV должен быть в том же формате, что и экспортированный файл.
  300. Первая строка CSVFILE должна содержать имена тегов ExifTool (с необязательными именами групп) для каждого столбца файла и значения должны быть разделены запятыми.
  301. В специальном столбце «Исходный файл» указываются файлы, связанные с каждой строкой информации (а исходный файл со знаком «*» может использоваться для определения
  302. тегов по умолчанию, которые будут импортированы для всех файлов, которые объединены с любыми тегами, указанными для конкретного обработанного исходного файла).
  303. В следующие примеры демонстрируют базовое использование этой опции:
  304. создать CSV-файл с общими тегами из всех изображений в каталоге: exiftool -common -csv каталог> out.csv
  305. обновить метаданные для всех изображений в каталоге из файла CSV: exiftool -csv = a.csv каталог
  306. Пустые значения игнорируются при импорте (если не используется параметр -f и для API MissingTagValue задана пустая строка, и в этом случае тег удалено). Кроме
  307. того, столбцы FileName и Directory игнорируются, если они существуют (т. Е. ExifTool не будет пытаться записать эти теги при импорте CSV). К принудительно удалить
  308. тег, используйте параметр -f и установите значение «-» в файле CSV (или значение MissingTagValue, если использовалась эта опция API). За одну команду можно
  309. импортировать несколько баз данных.
  310. При экспорте файла CSV опция -g или -G добавляет имена групп к заголовкам тегов. Если параметр -a используется для разрешения дублирования имен тегов, параметр
  311. повторяющиеся теги включаются в вывод CSV только в том случае, если заголовки столбцов уникальны. Добавление опции -G4 обеспечивает уникальный заголовок столбца для
  312. каждого тег. Параметр -b может быть добавлен для вывода двоичных данных, закодированных в base64, если необходимо (обозначено ASCII «base64:» как первые 7 байтов
  313. ценность). Значения также могут быть закодированы в base64, если используется опция -charset и значение содержит недопустимые символы.
  314. При экспорте определенных тегов столбцы CSV располагаются в том же порядке, что и указанные теги, при условии, что заголовки столбцов точно соответствуют
  315. указанные имена тегов, в противном случае столбцы сортируются в алфавитном порядке. При импорте из файла CSV обрабатываются только файлы, указанные в командной
  316. строке. Любые лишние записи в файле CSV игнорируются. Теги типа списка хранятся в виде простых строк в файле CSV, но можно использовать параметр -sep, чтобы
  317. разбить их обратно на отдельные элементы при импорте. Специальная функция: -csv + = CSVFILE может использоваться для добавления элементов в существующие списки.
  318. Это влияет только на теги типа списка. Также относится к опции -j.
  319. Обратите внимание, что этот параметр принципиально отличается от всех других параметров выходного формата, поскольку он требует, чтобы информация из всех входных
  320. файлов была буферизуется в памяти перед записью вывода. Это может привести к чрезмерному использованию памяти при обработке очень большого количества файлов с
  321. помощью одного команда. Кроме того, это делает этот параметр несовместимым с параметром -w. При обработке большого количества файлов рекомендуется либо использовать
  322. Формат вывода JSON (-j) или XML (-X) или используйте -p для создания файла CSV с фиксированным столбцом вместо использования параметра -csv.";ES;fi;;
  323. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo " Установите формат значений тегов даты / времени. Строка FMT может содержать коды форматирования, начинающиеся с символа процента (\"%\") для представления
  324. различные компоненты значения даты / времени. Особенности синтаксиса FMT зависят от системы - обратитесь к странице руководства \"strftime\" в вашей системе, чтобы
  325. узнать Детали. Формат по умолчанию эквивалентен «% Y:% m:% d% H:% M:% S». Этот параметр не влияет на теги только даты или времени и игнорирует часовой пояс.
  326. информация, если таковая имеется. Для каждой команды можно использовать только одну опцию -d. Требуется POSIX :: strptime или Time :: Piece для преобразования
  327. инверсии, когда письмо.";ES;fi;;
  328. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo " Показывать идентификационный номер тега в десятичном формате при извлечении информации.";ES;fi;;
  329. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo " Экранирующие символы в значениях выходных тегов для HTML (-E), XML (-ex) или C (-ec). Для HTML все символы с кодовыми точками Unicode выше U + 007F являются
  330. экранированы, а также следующие 5 символов: & (& amp;) '(& # 39;) \"(& quot;)> (& gt;) и <(& lt;). Для XML экранируются только эти 5 символов. Параметр -E
  331. подразумевается с -h, а -ex подразумевается с -X. Для C все управляющие символы и обратная косая черта экранируются. Обратное преобразование применяется при
  332. написании тегов.";ES;fi;;
  333. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo " Принудительная печать тегов, даже если их значения не найдены. Этот параметр применяется только тогда, когда в командной строке запрашиваются определенные теги
  334. (т. Е. Не с подстановочными знаками или -all). При использовании этой опции тире (-) печатается для значения любого отсутствующего тега, но тире можно изменить через
  335. API. Параметр MissingTagValue. Также может использоваться для добавления атрибута flags в вывод -listx или для разрешения удаления тегов при записи с помощью
  336. -csv = функция CSVFILE.";ES;fi;;
  337. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo " Организуйте вывод по группам тегов. NUM указывает номер семейства группы и может быть 0 (общее расположение), 1 (конкретное расположение), 2 (категория),
  338. 3 (документ номер), 4 (номер экземпляра), 5 (путь к метаданным), 6 (формат EXIF / TIFF) или 7 (идентификатор тега). -g0 предполагается, если номер семейства не
  339. указан. Может быть в сочетании с другими параметрами для добавления имен групп к выходным данным. Можно указать несколько семейств, разделив их двоеточием.
  340. По умолчанию итоговое имя группы упрощается за счет удаления любого ведущего «Main:» и сворачивания смежных идентичных имен групп, но этого можно избежать,
  341. поместив двоеточие перед первым номером семьи (например, -g: 3: 1). Используйте параметр -listg, чтобы вывести список имен групп для указанного семейства.
  342. API SavePath и SaveFormat параметры включаются автоматически, если запрашиваются соответствующие имена групп семейств 5 или 6. Дополнительную информацию см.
  343. В документации API GetGroup.";ES;fi;;
  344. 19) S=M19;SC;if [[ $cur == enter ]];then R;echo " То же, что и -g, но вывести имя группы для каждого тега. -G0 предполагается, если ЧИСЛО не указано. Можно комбинировать с рядом других опций для добавления группы
  345. имена к выходу. Обратите внимание, что NUM можно добавить везде, где в документации упоминается -G. Подробнее см. Параметр -g выше.";ES;fi;;
  346. 20) S=M20;SC;if [[ $cur == enter ]];then R;echo " Используйте форматирование таблицы HTML для вывода. Подразумевается опция -E. Параметры форматирования -D, -H, -g, -G, -l и -s могут использоваться в сочетании
  347. с -h для влияют на формат HTML.";ES;fi;;
  348. 21) S=M21;SC;if [[ $cur == enter ]];then R;echo " Показывать идентификационный номер тега в шестнадцатеричном формате при извлечении информации.";ES;fi;;
  349. 22) S=M22;SC;if [[ $cur == enter ]];then R;echo " Создайте динамическую веб-страницу, содержащую шестнадцатеричный дамп информации EXIF. Это может быть очень мощным инструментом для низкоуровневого анализа EXIF.
  350. Информация. Параметр -htmlDump также вызывается, если параметры -v и -h используются вместе. Уровень подробности определяет максимальную длину блоки сброшены.
  351. СМЕЩЕНИЕ может быть задано для определения базы для отображаемых смещений. Если не указано, используется базовое смещение EXIF / TIFF. Используйте -htmlDump0 для
  352. абсолютных смещений. В настоящее время выгружается только информация EXIF / TIFF и JPEG, но можно использовать параметр -u для получения необработанного
  353. шестнадцатеричного дампа другого файла форматы.";ES;fi;;
  354. 23) S=M23;SC;if [[ $cur == enter ]];then R;echo " Используйте форматирование JSON (нотация объектов JavaScript) для вывода на консоль или импортируйте файл JSON, если указан JSONFILE. Этот вариант можно
  355. комбинировать с -g, чтобы организовать вывод в объекты по группам, или -G, чтобы добавить имена групп к каждому тегу. Теги типа списка с несколькими элементами
  356. выводятся в виде массивов JSON если не используется -sep. По умолчанию структуры XMP объединяются в отдельные теги в выводе JSON, но исходная структура может быть
  357. сохранена с параметром -struct (это также приводит к тому, что все теги XMP типа списков выводятся в виде массивов JSON, в противном случае списки с одним элементом
  358. будут выводиться как простые струны). Параметр -a подразумевается, если используются параметры -g или -G, в противном случае он игнорируется и теги с идентичными
  359. именами JSON подавляются. (-g4 может использоваться, чтобы гарантировать, что все теги имеют уникальные имена JSON.) Добавление параметра -D или -H изменяет значения
  360. тегов на объекты JSON с \"val\" и \"id\" fields, а добавление -l добавляет поле «desc» и поле «num», если числовое значение отличается от преобразованного «val».
  361. Можно добавить параметр -b для вывода двоичных данных, закодированных в base64, если необходимо (обозначенных ASCII «base64:» как первые 7 байтов значения), и -t
  362. может быть добавлен для включения информация о таблице тегов (подробнее см. -t). Выходными данными JSON является UTF-8 независимо от настройки параметра -L или
  363. -charset, но проверка UTF-8 выполняется отключено, если указан набор символов, отличный от UTF-8.
  364. Если указан JSONFILE, файл импортируется, и определения тегов из файла используются для установки значений тегов для каждого файла. Специальный Запись
  365. «SourceFile» в каждом объекте JSON связывает информацию с конкретным целевым файлом. Объект с отсутствующим SourceFile или SourceFile из «*» определяет теги по
  366. умолчанию для всех целевых файлов, которые комбинируются с любыми тегами, указанными для конкретного обрабатываемого исходного файла. Импортированный JSON файл
  367. должен иметь тот же формат, что и экспортированные файлы JSON, за исключением того, что параметр -g несовместим с форматом файла импорта (используйте -G вместо).
  368. Кроме того, имена тегов во входном файле JSON могут иметь суффикс «#», чтобы отключить преобразование печати.
  369. В отличие от импорта CSV, пустые значения не игнорируются и приводят к записи пустого значения, если это поддерживается конкретным типом метаданных. Теги
  370. удаляется с помощью параметра -f и установки значения тега равным «-» (или параметру MissingTagValue, если использовался этот параметр API). Импорт с -j + = JSONFILE
  371. вызывает добавление новых значений в существующие списки.";ES;fi;;
  372. 24) S=M24;SC;if [[ $cur == enter ]];then R;echo " Используйте длинный двухстрочный выходной формат в стиле Canon. Добавляет описание и непреобразованное значение (если оно отличается от преобразованного значения)
  373. в XML, JSON или Вывод PHP при использовании -X, -j или -php. Также можно комбинировать с -listf, -listr или -listwf для добавления описаний типов файлов.";ES;fi;;
  374. 25) S=M25;SC;if [[ $cur == enter ]];then R;echo "
  375. Установите текущий язык для описаний тегов и преобразованных значений. LANG - это «de», «fr», «ja» и т. Д. Используйте -lang без других аргументов, чтобы получить
  376. список доступные языки. Если -lang не указан, языком по умолчанию является «en». Обратите внимание, что имена тегов / групп всегда английские, независимо от -lang.
  377. настройка и перевод предупреждений / сообщений об ошибках еще не реализованы. Также можно комбинировать с -listx для вывода описаний в один только язык.
  378. По умолчанию ExifTool использует кодировку UTF-8 для специальных символов, но для вызова других кодировок можно использовать параметр -L или -charset. Обратите
  379. внимание, что ExifTool использует Unicode :: LineBreak, если он доступен, чтобы помочь сохранить выравнивание столбцов при выводе обычного текста для языков с
  380. переменной шириной набор символов.
  381. В настоящее время языковая поддержка не завершена, но пользователи могут помочь улучшить это, отправив свои собственные переводы. Чтобы представить перевода,
  382. выполните следующие действия (для этого у вас должен быть установлен Perl):
  383. 1. Скачайте и распакуйте последний полный дистрибутив Image-ExifTool.
  384. 2. «cd» в каталог Image-ExifTool.
  385. 3. Выполните эту команду, чтобы создать XML-файл с нужными тегами (например, EXIF): ./exiftool -listx -exif:all > out.xml
  386. 4. Скопируйте этот текст в файл с именем import.pl в каталоге exiftool:
  387. push @INC, 'lib';
  388. require Image::ExifTool::TagInfoXML;
  389. my $file = shift or die "Expected XML file name\n";
  390. $Image::ExifTool::TagInfoXML::makeMissing = shift;
  391. Image::ExifTool::TagInfoXML::BuildLangModules($file,8);
  392. 5. Запустите сценарий import.pl, чтобы импортировать XML-файл, создав записи «ОТСУТСТВУЮЩИЕ» для вашего языка (например, русского): perl import.pl out.xml ru
  393. 6. Отредактируйте созданный языковой модуль lib/Image/ExifTool/Lang/ru.pm найдите и замените все строки «MISSING» в файле вашими переводами.
  394. 7. Отправьте модуль (в данном примере ru.pm) по электронной почте на адрес: philharvey66 at gmail.com
  395. 8. Спасибо !!
  396. ";ES;fi;;
  397. 26) S=M26;SC;if [[ $cur == enter ]];then R;echo " Для тегов типа списка это приводит к извлечению только элемента с указанным индексом. ИНДЕКС равен 0 для первого элемента в списке. Отрицательные показатели также
  398. может использоваться для ссылки на элементы из конца списка. Не влияет на однозначные теги. Также применяется к значениям тегов при копировании из тег и в условиях
  399. -if.";ES;fi;;
  400. 27) S=M27;SC;if [[ $cur == enter ]];then R;echo "
  401. Отключите преобразование печати для всех тегов. По умолчанию извлеченные значения конвертируются в более удобный для чтения формат, но опция -n отключает это
  402. преобразование, показывающее машиночитаемые значения. Например:
  403. > exiftool -Orientation -S a.jpg
  404. Orientation: Rotate 90 CW
  405. > exiftool -Orientation -S -n a.jpg
  406. Orientation: 6
  407. Преобразование печати также можно отключить для каждого тега, добавив к имени тега суффикс символа \"#\":
  408. > exiftool -Orientation# -Orientation -S a.jpg
  409. Orientation: 6
  410. Orientation: Rotate 90 CW
  411. Эти методы также могут использоваться для отключения обратного преобразования печати при записи. Например, все следующие команды имеют одинаковый эффект:
  412. > exiftool -Orientation='Rotate 90 CW' a.jpg
  413. > exiftool -Orientation=6 -n a.jpg
  414. > exiftool -Orientation#=6 a.jpg
  415. ";ES;fi;;
  416. 28) S=M28;SC;if [[ $cur == enter ]];then R;echo "
  417. Вывод на печать в формате, заданном данным файлом или строкой. Аргумент интерпретируется как строка, если не существует файла с таким именем, в котором если
  418. строка загружается из содержимого файла. Имена тегов в файле или строке формата начинаются с символа «\$» и могут содержать начальную группу имена и / или
  419. завершающий знак \"#\" (для отключения преобразования печати). Дело не имеет значения. Скобки \"{}\" могут использоваться вокруг имени тега, чтобы отделить его от
  420. последующий текст. Используйте \$\$ для обозначения символа «$» и $ / для новой строки.
  421. Можно использовать несколько параметров -p, каждая из которых выводит строку (или более) текста. Выводятся строки, начинающиеся с \"# [HEAD]\" и \"# [TAIL]\".
  422. перед первым обработанным файлом и после последнего обработанного файла соответственно. Строки, начинающиеся с \"# [SECT]\" и \"# [ENDS]\" выводятся перед и после
  423. каждого раздела файлов. Раздел определяется как группа последовательных файлов с одинаковым заголовком раздела (например, файлы группируются по каталогам, если
  424. \"# [SECT]\" содержит каталог \$). Строки, начинающиеся с «# [BODY]» и строки, не начинающиеся с «#», выводятся для каждого обработанного файла. Начало строк с
  425. \"# [IF]\" не выводятся, но все строки BODY пропускаются, если какой-либо тег в строке IF не существует. Остальные строки, начинающиеся с \"#\", игнорируются. За
  426. Например, этот файл формата:
  427. # this is a comment line
  428. #[HEAD]-- Generated by ExifTool $exifToolVersion --
  429. File: \$FileName - \$DateTimeOriginal
  430. (f/\$Aperture, \${ShutterSpeed}s, ISO \$EXIF:ISO)
  431. #[TAIL]-- end --
  432. с помощью этой команды:
  433. exiftool -p test.fmt a.jpg b.jpg
  434. производит такой вывод:
  435. -- Generated by ExifTool 12.05 --
  436. File: a.jpg - 2003:10:31 15:44:19
  437. (f/5.6, 1/60s, ISO 100)
  438. File: b.jpg - 2006:05:23 11:57:38
  439. (f/8.0, 1/13s, ISO 100)
  440. -- end --
  441. Значения тегов типа списка с несколькими элементами и тегов ярлыков, представляющих несколько тегов, объединяются в соответствии с настройкой параметра -sep, когда
  442. вставляется в строку. Когда -ee (-extractEmbedded) комбинируется с -p, внедренные документы эффективно обрабатываются как отдельные входные файлы. Если указанный
  443. тег не существует, выдается незначительное предупреждение и строка с отсутствующим тегом не печатается. Однако опцию -f можно использовать для установите значение
  444. отсутствующих тегов на '-' (но это можно настроить с помощью параметра API MissingTagValue), или параметр -m может использоваться для игнорирования второстепенных
  445. предупреждения и оставьте пропущенные значения пустыми. В качестве альтернативы можно использовать -q -q, чтобы просто подавить предупреждающие сообщения.
  446. «Функция расширенного форматирования» может использоваться для изменения значений отдельных тегов с параметром -p.
  447. ";ES;fi;;
  448. 29) S=M29;SC;if [[ $cur == enter ]];then R;echo "
  449. Отформатируйте вывод как массив PHP. Параметры -g, -G, -D, -H, -l, -sep и -struct комбинируются с -php, и повторяющиеся теги обрабатываются так же, как с
  450. параметром -json. Кроме того, параметр -b может быть добавлен для вывода двоичных данных, и -t может быть добавлен для включения информации таблицы тегов (см. -T для
  451. Детали). Вот простой пример, показывающий, как это можно использовать в сценарии PHP:
  452. <?php
  453. eval('$array=' . \`exiftool -php -q image.jpg\`);
  454. print_r($array);
  455. ?>
  456. ";ES;fi;;
  457. 30) S=M30;SC;if [[ $cur == enter ]];then R;echo "
  458. Короткий выходной формат. Печатает имена тегов вместо описаний. Добавьте NUM или до 3-х параметров для еще более коротких форматов:
  459. -s1 or -s - print tag names instead of descriptions
  460. -s2 or -s -s - no extra spaces to column-align values
  461. -s3 or -s -s -s - print values only (no tag names)
  462. Также эффективен в сочетании с параметрами -t, -h, -X или -listx.
  463. ";ES;fi;;
  464. 31) S=M31;SC;if [[ $cur == enter ]];then R;echo " Очень короткий формат. То же, что и опции -s2 или два -s. Имена тегов печатаются вместо описаний, и никакие лишние пробелы не добавляются для выравнивания по
  465. столбцам ценности.";ES;fi;;
  466. 32) S=M32;SC;if [[ $cur == enter ]];then R;echo " Укажите разделительную строку для элементов в тегах типа списка. При чтении по умолчанию элементы списка объединяются с помощью \",\\ \". При записи эта опция
  467. вызывает значения, присвоенные тегам типа списка, которые должны быть разделены на отдельные элементы в каждой подстроке, соответствующей STR (в противном случае они
  468. не разделяются по умолчанию). Космос символы в STR соответствуют нулю или более пробелов в значении. Обратите внимание, что пустой разделитель (\"\") разрешен и
  469. будет соединять элементы без разделителя при чтении или разделять значение на отдельные символы, когда письмо.
  470. Для чисто двоичного вывода (-b используется без -j, -php или -X) первая опция -sep указывает разделитель элементов списка, а вторая опция -sep указывает
  471. терминатор в конце списка (или после каждого значения, если не список). В этих строках \"\\ n\", \"\\ r\" и \"\\ t\" могут использоваться для обозначения новой строки,
  472. возврат каретки и табуляция соответственно. По умолчанию элементы двоичного списка разделяются новой строкой, и терминатор не добавляется.";ES;fi;;
  473. 33) S=M33;SC;if [[ $cur == enter ]];then R;echo " Сортировать вывод по описанию тега или по имени тега, если используется опция -s. При сортировке по описанию порядок сортировки будет зависеть от параметра -lang.
  474. параметр. Без опции -sort теги отображаются в том порядке, в котором они были указаны в командной строке, или, если не указан, в том порядке, в котором они были
  475. извлеченный из файла. По умолчанию теги организованы по группам при сочетании с параметром -g или -G, но эту группировку можно отключить с помощью --sort";ES;fi;;
  476. 34) S=M34;SC;if [[ $cur == enter ]];then R;echo " Выводит структурированную информацию XMP вместо объединения в отдельные теги. Этот вариант хорошо работает в сочетании с XML (-X) и JSON (-j) форматы вывода. Для
  477. других форматов вывода структуры и списки XMP сериализуются в тот же формат, что и при записи структурированной информации (см. https://exiftool.org/struct.html для
  478. подробностей). При копировании структурированные теги копируются по умолчанию, если для отключения этой функции не используется --struct (хотя сглаженные теги все
  479. еще можно копировать, задав их индивидуально, если не используется -struct). Эти параметры не действуют при назначении новых значения, поскольку при записи всегда
  480. можно использовать как плоские, так и структурированные теги.";ES;fi;;
  481. 35) S=M35;SC;if [[ $cur == enter ]];then R;echo " Вывести список описаний / значений, разделенных табуляцией (полезно при импорте базы данных). Можно комбинировать с -s для печати имен тегов вместо описаний, или
  482. -S для печати только значений тегов, разделенных табуляцией в одной строке. Опцию -t можно комбинировать с -j, -php или -X для добавления информации таблицы тегов.
  483. (\"table\", tag \"id\", and \"index\" для случаев, когда существует несколько условных тегов с одним и тем же идентификатором).";ES;fi;;
  484. 36) S=M36;SC;if [[ $cur == enter ]];then R;echo " Вывести значения тегов в виде таблицы. Эквивалентно -t -S -q -f. ";ES;fi;;
  485. #
  486. 37) S=M37;SC;if [[ $cur == enter ]];then R;./mExiftoolTagB.sh;ES;fi;;
  487. 38) S=M38;SC;if [[ $cur == enter ]];then R;clear;exit 0;fi;;
  488. esac;POS;done