Skip to content

Команда encode ​

Команда hazehash ставится вместе с пакетом hazehash. Для чтения изображений ей нужен необязательный пакет sharp:

bash
npm install --save-dev hazehash sharp
npx hazehash --help

У каждой команды есть собственный --help с полным списком опций. Общие опции: -h, --help, -V, --version и --color / --no-color. Цвета отключаются и когда вывод перенаправлен, когда задана переменная NO_COLOR и в «глупом» терминале, а FORCE_COLOR их включает. Остальные команды описаны на странице Команды decode и info.

encode ​

Создаёт хеши из файлов изображений, папок, glob-шаблонов или стандартного ввода. В терминале результат это цветная таблица с размером каждого изображения, размером его хеша, средним цветом и итогами; при перенаправлении вывода это простой текст, так что скрипты могут использовать его как есть.

bash
hazehash encode <input…> [options]

Вход это файл изображения, папка, glob-шаблон вроде "photos/**/*.jpg" (возьмите его в кавычки, чтобы оболочка его не раскрывала) или -, чтобы прочитать одно изображение из стандартного ввода.

Пример — одно изображение, хеш выводится отдельно:

bash
hazehash encode photo.jpg
text
Ed7UwRWKKv5znm6a7sC1tziHDNpMuCikxrYpIg

Пример — папка, таблицей:

bash
hazehash encode ./images --pretty
text
HazeHash encode  budget 28 B · profile default · alpha auto

    Image                      Pixels      File  Hash  Value
  ✔ images/alpha-003.png     1280×510   43.4 KB  13 B  NYATKSAAADXSSaWLiA
  ✔ images/city-012.jpg      1280×959  280.6 KB  28 B  Ed7UwRWKKv5znm6a7sC1tziHDNpMuCikxrYpIg
  ✔ images/document-004.jpg  1280×821  508.7 KB  28 B  Et4TPyOAQNXnVbzFulUm5bq7tUi1isKm3pOziQ

✔ 3 hashes · 832.8 KB → 69 B · 12,359× smaller · 186 ms

Таблица выше показана для ширины 100 колонок. Более широкий терминал дополнительно показывает средний цвет каждого изображения с цветной плашкой и то, во сколько раз хеш меньше файла; более узкий в первую очередь отбрасывает менее важные колонки.

Опции хеша ​

-b, --budget <bytes> ​

Максимальный размер одного хеша в байтах, вместе с заголовком. По умолчанию 28; минимум 7 байт, или 9 с альфой. Больше байт сохраняют больше деталей; см. Выбор бюджета.

bash
hazehash encode photo.jpg --budget 24

-p, --profile <name> ​

Насколько усердно энкодер ищет решение: fast (около 1 мс на изображение), default (около 5 мс) или high (уточняет результат ради примерно на 1% меньшей ошибки). По умолчанию default.

-a, --analysis-size <px> ​

Длинная сторона уменьшенного изображения, по которому считается хеш, 32–128. По умолчанию 64; больше редко помогает.

--alpha <mode> ​

auto сохраняет прозрачность, только если она есть у изображения (по умолчанию), true сохраняет её всегда, false никогда.

Какие изображения ​

-r, --recursive ​

Искать и в подпапках, когда вход это папка. Glob-шаблон с ** ищет в подпапках всегда.

Вывод ​

-f, --format <kind> ​

text выводит один хеш для одного изображения или строки path<TAB>hash для нескольких. json выводит объект { "path": "hash" }. csv выводит таблицу со строкой заголовка. По умолчанию text.

bash
hazehash encode ./images -f json
json
{
  "images/alpha-003.png": "NYATKSAAADXSSaWLiA",
  "images/city-012.jpg": "Ed7UwRWKKv5znm6a7sC1tziHDNpMuCikxrYpIg",
  "images/document-004.jpg": "Et4TPyOAQNXnVbzFulUm5bq7tUi1isKm3pOziQ"
}

--details ​

Для json и csv добавляет размер хеша, размер изображения и размер файла.

bash
hazehash encode ./images -f csv --details
text
file,hash,bytes,width,height,fileBytes
images/alpha-003.png,NYATKSAAADXSSaWLiA,13,1280,510,44406
images/city-012.jpg,Ed7UwRWKKv5znm6a7sC1tziHDNpMuCikxrYpIg,28,1280,959,287378
images/document-004.jpg,Et4TPyOAQNXnVbzFulUm5bq7tUi1isKm3pOziQ,28,1280,821,520957

--hex ​

Выводит хеши в hex вместо base64url.

bash
hazehash encode photo.jpg --hex
# 11ded4c1158a2afe739e6e9aeec0b5b738870cda4cb828a4c6b62922

-o, --output <file> ​

Записывает результат в файл вместо стандартного вывода.

bash
hazehash encode "images/**/*.jpg" -f json -o hashes.json

--pretty, --plain ​

--pretty это цветная таблица с итогами, по умолчанию в терминале. --plain для скриптов и по умолчанию при перенаправлении вывода.

-q, --quiet ​

Без прогресса и итогов, только результат и ошибки.

Чтение из стандартного ввода ​

bash
cat photo.jpg | hazehash encode -

Коды выхода ​

  • 0 — все изображения закодированы.
  • 1 — хотя бы один вход не удался. Остальные всё равно записываются, а сбой выводится в стандартный поток ошибок.
  • 2 — ошибка в командной строке.

Вход, который не найден, сообщается так:

text
✖ nothing.jpg: no image found