mExiftoolRedingExemples.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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<=23; a++ ))
  16. do
  17. TPUT $a 1
  18. $E "\033[34m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  19. done
  20. TPUT 22 4
  21. $E "\033[32mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\033[0m";
  22. MARK;TPUT 1 1
  23. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m" ;UNMARK;}
  24. i=0; CLEAR; CIVIS;NULL=/dev/null
  25. FOOT(){ MARK;TPUT 24 1
  26. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  27. # это управляет кнопками ввер/хвниз
  28. i=0; CLEAR; CIVIS;NULL=/dev/null
  29. #
  30. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  31. if [[ $key = $ESC ]];then
  32. read -s -n1 key 2>/dev/null >&2;
  33. if [[ $key = \[ ]]; then
  34. read -s -n1 key 2>/dev/null >&2;
  35. if [[ $key = A ]]; then echo up;fi
  36. if [[ $key = B ]];then echo dn;fi
  37. fi
  38. fi
  39. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  40. M0(){ TPUT 2 3; $e "Примечание: \033[32m Note: \033[0m";}
  41. M1(){ TPUT 3 3; $e "Распечатать всю метаинформацию изображения, теги \033[32m exiftool -a -u -g1 a.jpg \033[0m";}
  42. M2(){ TPUT 4 3; $e "Вывести общую метаинформацию для всех изображений в «каталоге» \033[32m exiftool -common dir \033[0m";}
  43. M3(){ TPUT 5 3; $e "Перечислить метаинформацию в виде столбца с разделителями табуляции \033[32m exiftool -T -createdate -aperture -shutterspeed -iso dir > out.txt \033[0m";}
  44. M4(){ TPUT 6 3; $e "Распечатайте имена и значения тегов ImageSize и ExposureTime \033[32m exiftool -s -ImageSize -ExposureTime b.jpg \033[0m";}
  45. M5(){ TPUT 7 3; $e "Распечатайте стандартную информацию Canon из двух файлов изображений \033[32m exiftool -l -canon c.jpg d.jpg \033[0m";}
  46. M6(){ TPUT 8 3; $e "Рекурсивно извлекать метаинформацию из файлов в каталоге «pictures» \033[32m exiftool -r -w .txt -common pictures \033[0m";}
  47. M7(){ TPUT 9 3; $e "Сохраните миниатюрное изображение из image.jpg в файл thumbnail.jpg \033[32m exiftool -b -ThumbnailImage image.jpg > thumbnail.jpg \033[0m";}
  48. M8(){ TPUT 10 3; $e "Рекурсивно извлеките изображение JPG из всех файлов Nikon NEF \033[32m exiftool -b -JpgFromRaw -w _JFR.JPG -ext NEF -r \033[0m";}
  49. M9(){ TPUT 11 3; $e "Извлеките все типы изображений предварительного просмотра \033[32m exiftool -a -b -W %d%f_%t%-c.%s -preview:all dir \033[0m";}
  50. M10(){ TPUT 12 3; $e "Печать даты, времени в формате для всех файлов JPG в каталоге \033[32m exiftool -d '%r %a, %B %e, %Y' -DateTimeOriginal -S -s -ext jpg \033[0m";}
  51. M11(){ TPUT 13 3; $e "Извлечь разрешение изображения из информации EXIF IFD1 (эскиз IFD) \033[32m exiftool -IFD1:XResolution -IFD1:YResolution image.jpg \033[0m";}
  52. M12(){ TPUT 14 3; $e "Извлеките из изображения все теги с именами, содержащими «Разрешение» \033[32m exiftool '-*resolution*' image.jpg \033[0m";}
  53. M13(){ TPUT 15 3; $e "Извлеките из изображения всю информацию об авторе XMP \033[32m exiftool -xmp:author:all -a image.jpg \033[0m";}
  54. M14(){ TPUT 16 3; $e "Извлеките полную запись данных XMP в неповрежденном виде \033[32m exiftool -xmp -b a.jpg > out.xmp \033[0m";}
  55. M15(){ TPUT 17 3; $e "Выведите одну строку вывода, содержащую имя файла и DateTimeOriginal \033[32m exiftool -p '\$filename has date \$dateTimeOriginal' -q -f dir \033[0m";}
  56. M16(){ TPUT 18 3; $e "Извлеките все позиции GPS из видео AVCHD \033[32m exiftool -ee -p '\$gpslatitude, \$gpslongitude, \$gpstimestamp' a.m2ts\033[0m";}
  57. M17(){ TPUT 19 3; $e "Сохраните полный ICC_Profile из изображения в выходной файл \033[32m exiftool -icc_profile -b -w icc image.jpg \033[0m";}
  58. M18(){ TPUT 20 3; $e "Сгенерируйте HTML-страницы из шестнадцатеричного дампа информации EXIF\033[32m exiftool -htmldump -w tmp/%f_%e.html t/images \033[0m";}
  59. M19(){ TPUT 21 3; $e "Извлечение встроенных изображений JPG и JP2 из файла PDF \033[32m exiftool -a -b -ee -embeddedimage -W Image_%.3g3.%s file.pdf \033[0m";}
  60. #
  61. M20(){ TPUT 23 3; $e "Выход \033[32m EXIT \033[0m";}
  62. LM=20
  63. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  64. POS(){ if [[ $cur == up ]];then ((i--));fi
  65. if [[ $cur == dn ]];then ((i++));fi
  66. if [[ $i -lt 0 ]];then i=$LM;fi
  67. if [[ $i -gt $LM ]];then i=0;fi;}
  68. REFRESH(){ after=$((i+1)); before=$((i-1))
  69. if [[ $before -lt 0 ]];then before=$LM;fi
  70. if [[ $after -gt $LM ]];then after=0;fi
  71. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  72. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  73. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  74. INIT(){ R;HEAD;FOOT;MENU;}
  75. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  76. # Функция возвращения в меню
  77. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  78. while [[ "$O" != " " ]]; do case $i in
  79. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo " Будьте осторожны, вырезая и вставляя эти примеры в свой терминал! Некоторые символы, такие как одинарные и двойные кавычки и дефисы, могли быть преобразован в
  80. похожие на вид, но функционально разные символы средством форматирования текста, используемым для отображения этой документации. Также обратите внимание, что
  81. пользователи Windows необходимо использовать двойные кавычки вместо одинарных кавычек, как показано ниже, вокруг аргументов, содержащих специальные символы.";ES;fi;;
  82. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo " Распечатать всю метаинформацию изображения, включая повторяющиеся и неизвестные теги, с сортировкой по группам (для семейства 1). По соображениям
  83. производительности эта команда не может извлечь все доступные метаданные. (Метаданные во встроенных документах, метаданные, извлеченные внешними утилитами, и
  84. метаданные, требующие чрезмерного время обработки не может быть извлечено). Добавьте в команду «-ee» и «-api RequestAll = 3», чтобы извлечь абсолютно все, что
  85. доступно.";ES;fi;;
  86. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo " Вывести общую метаинформацию для всех изображений в «каталоге». «-common» - ярлык, представляющий общую метаинформацию EXIF.";ES;fi;;
  87. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo " Перечислить указанную метаинформацию в виде столбца с разделителями табуляции для всех изображений в «dir» в выходной текстовый файл с именем «out.txt».";ES;fi;;
  88. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo " Распечатайте имена и значения тегов ImageSize и ExposureTime.";ES;fi;;
  89. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo " Распечатайте стандартную информацию Canon из двух файлов изображений.";ES;fi;;
  90. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo " Рекурсивно извлекать общую метаинформацию из файлов в каталоге «pictures», записывая текстовый вывод в файлы «.txt» с такими же именами.";ES;fi;;
  91. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " Сохраните миниатюрное изображение из «image.jpg» в файл с именем «thumbnail.jpg».";ES;fi;;
  92. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo " Рекурсивно извлеките изображение JPG из всех файлов Nikon NEF в текущем каталоге, добавив «_JFR.JPG» в качестве имени выходных файлов JPG.";ES;fi;;
  93. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo " Извлеките все типы изображений предварительного просмотра (ThumbnailImage, PreviewImage, JpgFromRaw и т. Д.) Из файлов в каталоге \"dir\", добавив имя тега к
  94. выходным данным предварительный просмотр имен файлов изображений.";ES;fi;;
  95. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo " Печать даты и времени в формате для всех файлов JPG в текущем каталоге.";ES;fi;;
  96. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo " Извлечь разрешение изображения из информации EXIF IFD1 (эскиз IFD).";ES;fi;;
  97. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo " Извлеките из изображения все теги с именами, содержащими слово «Разрешение».";ES;fi;;
  98. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo " Извлеките из изображения всю информацию об авторе XMP.";ES;fi;;
  99. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo " Извлеките полную запись данных XMP в неповрежденном виде из «a.jpg» и запишите ее в «out.xmp» с помощью специального тега «XMP»
  100. (см. Дополнительные теги в Изображение :: ExifTool :: TagNames).";ES;fi;;
  101. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo " Выведите одну строку вывода, содержащую имя файла и DateTimeOriginal для каждого изображения в каталоге \"dir\".";ES;fi;;
  102. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo " Извлеките все позиции GPS из видео AVCHD.";ES;fi;;
  103. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo " Сохраните полный ICC_Profile из изображения в выходной файл с тем же именем и расширением «.icc».";ES;fi;;
  104. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo " Сгенерируйте HTML-страницы из шестнадцатеричного дампа информации EXIF во всех изображениях из каталога «t/images». Выходные файлы HTML записываются в \"tmp\".
  105. каталог (который создается, если он не существует) с именами в форме 'FILENAME_EXT.html'.";ES;fi;;
  106. 19) S=M19;SC;if [[ $cur == enter ]];then R;echo " Извлечение встроенных изображений JPG и JP2 из файла PDF. Выходные изображения будут иметь имена файлов, например: Image_#.jpg или Image_#.jp2
  107. где «#» - это ExifTool family 3 встроенный номер документа для изображения.";ES;fi;;
  108. #
  109. 20) S=M20;SC;if [[ $cur == enter ]];then R;clear;exit 0;fi;;
  110. esac;POS;done