Вид отображает соотношением сторон

OCSP является путем к программам, которые используют сертификаты X.509 (такие как что-либо с помощью SSL, как веб-браузеры для https: URL), чтобы проверить, был ли сертификат отменен, потому что он был поставлен под угрозу.

Вы не видите их при использовании https: непосредственно, потому что Вам был бы нужен пакетный трассировщик, который может дешифровать SSL и сертификат SSL, используемый для шифрования — который в большинстве случаев Вы не будете иметь.

13
08.10.2012, 19:06
5 ответов

Ну, самый легкий способ сделать это должно было бы использовать ImageMagick. Это должно быть в репозиториях Вашего дистрибутива Linux, поскольку debian основывал системы, выполненные:

sudo apt-get install imagemagick

Одна из программ комплекта ImageMagick identify, это распечатает характеристики списка входных файлов изображений. Объединение его с sort даст Вам список изображений, отсортированных по размеру (можно изменить png для любого расширения (расширений), которое Вы имеете:

identify *png | sort -gk 3

При фактической необходимости в соотношении сторон и не только размере попробуйте что-то вроде этого:

  1. Простая опция, предполагает, что Ваши названия картинки не имеют никаких пробелов:

    identify *png *jpg *gif | \
    gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | \
    sed 's/\[.\]//' | sort -gk 3
    

    Команда простофили разделяет 3-е поле (размер изображения, который имеет формат LxH) в массив "размеры", и затем печатает 1-е поле (название картинки) и результат деления длины изображения ее высотой. sed команда просто украшает вывод и sort команда сортирует результат согласно отношению размера изображения.

  2. Более сложный, этот может иметь дело с пробелами в именах файлов:

    find . \( -iname  "*png" -o -iname "*jpg" -o -iname "*gif" \) -exec identify {} \; |\
    perl -ne '/(.+?)\s+[A-Z]{3}\s+(\d+)x(\d+)/; print "$1 ", $2/$3, "\n"' | \
    sort -gk 2
    

    Здесь мы используем find для идентификации файлов, мы интересуемся и выполнены identify команда и затем передача по каналу ее вывода через небольшой сценарий Perl. Регулярное выражение ищет три прописных буквы ([A-Z]{3}) который должен быть форматом изображения. После того как мы нашли, что, легко определить название картинки и размеры.

    Я не использую простофилю здесь, потому что присутствие пробелов во входных именах файлов перепутает полевые числа. Наконец, сценарий распечатает название изображения и результат подразделения длины/высоты который мы sort численно.

Просто просматривание доступных соотношений сторон недостаточно, если у Вас есть по крайней мере одно изображение с желаемым соотношением сторон, просто используйте grep для извлечения тех изображений, отношение которых является самым близким:

identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' |\
sed 's/\[.\]//' | sort -gk 3 | grep -C 10 GOOD_IMAGE.jpg
3
27.01.2020, 19:53

Используя N.N.'s ImageMagick комментируют как вывод, оказывается, что у Вас может быть он, делают произвольные вычисления как часть -format вывод. Так, один возможный путь:

identify -format "%[fx:round(100000*abs((4/3)-(w/h)))]:%M\n" *.jpg | \
    sort -n -k1 -t:

должен сделать то, что Вы хотите. Обратите внимание, что 4/3 там является константой, желаемым соотношением сторон. Вы могли, конечно, найти что как вывод предыдущего identify (к соответствиям, "самым близким к этому изображению").

Для объяснения мы берем простое различие между желаемой и фактической порцией аспекта. Затем умножаясь большим количеством и округлением. Умножение и вокруг состоит в том, потому что вид только обрабатывает целые числа, не rationals.

править

Это складывается sort кажется, делает rationals, не просто целые числа. Его даже указанный к в Единственной Спецификации (v4) Unix. Так, можно избавиться от того обходного решения:

identify -format "%[fx:abs((4/3)-(w/h))]:%M\n" *.jpg | \
    sort -n -k1 -t:
8
27.01.2020, 19:53
  • 1
    Где Вы находили документацию относительно identify's - параметр формата? Я ничего не видел в странице справочника и провел некоторое время, пытаясь понять проклятую вещь :). –  terdon♦ 08.10.2012, 20:57
  • 2
    О, и в моей системе Ваша команда, кажется, не работает. Я добираюсь 33333:cover.jpg где cover.jpg 500x500. –  terdon♦ 08.10.2012, 20:58
  • 3
    @terdon хорошо, поэтому это имеет отношение 1/1 не 4/3. 4/3-1 = 1/3 =.333 …. Просто изменение, которое 4/3 к отношению Вы хотите (который походит на его 1/1). Документы по imagemagick.org/script/fx.php обычно запутывающим способом. Взял меня некоторое время для нахождения их, также. –  derobert 08.10.2012, 21:01
  • 4
    Спасибо за ссылку. Что касается остальных, я был идиотом. У меня только был один jpg в моей тестовой папке (остальные - pngs), поэтому, так как я видел только одну выходную строку, я предположил, что это было желаемым результатом и которые определяют, утверждал, что изображение имело 4/3 соотношение сторон. Это - то, что я получаю для попытки думать по понедельникам вечером... +1 для изящного решения. –  terdon♦ 08.10.2012, 21:07

Соотношение сторон является просто числом, таким образом, можно просмотреть изображения согласно их именам, если имя снабжается префиксом соотношение сторон. Создание символьных ссылок с предварительно ожидаемым соотношением сторон позволяет Вам просматривать изображения, отсортированные по соотношению сторон.

Следующие средства просмотра работают как ожидалось. (feh не передает/поддерживает, даже для реальных изображений - в моей системе),

  • комиксы
  • eog (Глаз Gnome / Программа просмотра изображений)
  • gwenview

picd='/media/dat_ext4/pictures/jpg/misc'
srtd="$picd/ar-sort"   # directory to hold "sorted" symbolic links
mkdir -p "$srtd"              

find "$picd" -maxdepth 1 -type f -name "*" -print0 | 
  while IFS= read -d $'\0' -r file ; do
    [[ $(file -ib "$file") != image* ]] && continue  # skip non-image files
    ar="$(identify -format "%[fx:w/h]" "$file")"  
    slink="$(printf '%s/%06.4f %s' "$srtd" "$ar" "$(basename "$file")")"
    # make symbolic link in 'ar-sort' directory
    ln -s "$file" "$slink"  
    echo "$slink" 
  done 

Войдите ar-sort каталог и просто просматривает от любой начальной точки (соотношение сторон), Вы интересуетесь.

Имена символьной ссылки похожи на это:

0.6732 Gold Bars.jpg
0.7242 Light Bulb.jpg
0.8022 Escher - Waterfall.jpg
1.3696 Old Typewriter.jpg
1.6000 King Tut.jpg
2
27.01.2020, 19:53

Можно вычислить различие каждого соотношения сторон со ссылкой. Похож на ответ derobert, но более простой:

ref=4/3
identify -format "%[fx:abs(w/h - $ref)] %M\n" *.jpg | sort -n -k1
2
27.01.2020, 19:53
  • 1
    Хм, по-видимому, вид действительно делает rationals. У меня создалось впечатление, оно не сделало... –  derobert 08.10.2012, 21:22

Моя обычная цепь рассуждений состоит в том, чтобы использовать ошибочную метрику расстояния в квадрате везде, где я слышу слова "степень близости". Можно, конечно, использовать абсолютные значения, и это было бы быстрее. Сценарий берет в качестве аргумента идеальное соотношение сторон, обрабатывает все *.jpg файлы в текущем каталоге и выводах их отсортированный в увеличивающемся порядке расхождения от идеального отношения.

head удаляет запаздывание символа конца строки, вставленного ImageMagick.

Сценарий содержит команду простофили, которая устанавливает выходного разделителя полей на маловероятный символ, вычисляет различие в квадрате и печатает назад пару difference|file имя. Вид выполняется, и ненужная информация (различие в соотношении сторон в квадрате) отобрана cut.

#!/bin/sh
if [ x"$1" = "x" ] ; then
  echo "Usage: $0 TargetAspectRatio" >&2
  exit 2
fi
ASPECT_CMD="BEGIN{OFS=\"|\";}\
{\
print (\$1-$1)^2, \$2;\
}"
identify -format "%[fx:w/h]:%M\n" *.jpg | head -n-1 | gawk -F":" "$ASPECT_CMD" | sort -k1 -t"|" | cut -f2 -d"|"
1
27.01.2020, 19:53
  • 1
    Обратите внимание на то, что это использует квадратичное расстояние и вычисления в gawk/awk :) (Благодаря @N.N. для начального ярлыка) –  Deer Hunter 08.10.2012, 21:19
  • 2
    Вы могли добавить объяснение сценария к Вашему ответу? Это сделало бы его лучше. –  N.N. 08.10.2012, 23:10

Теги

Похожие вопросы