Как тон сепии создается?

Вы также можете быть заинтересованы в , как сделать прядильщик :

Можно ли сделать прядильщик в Bash?

Конечно!

i=1
sp="/-\|"
echo -n ' '
while true
do
    printf "\b${sp:i++%${#sp}:1}"
done

Каждый раз, когда цикл повторяется, он отображает следующий символ в строке sp, оборачиваясь по мере достижения конца. (i - позиция отображаемого текущего символа, а $ {# sp} - длина строки sp).

Строка \ b заменяется символом «возврат». Или вы можете поиграть с \ r, чтобы вернуться к началу строки.

Если вы хотите, чтобы это замедлилось, поместите команду сна в цикл (после printf).

Эквивалентом POSIX будет:

sp='/-\|'
printf ' '
while true; do
    printf '\b%.1s' "$sp"
    sp=${sp#?}${sp%???}
done

Если у вас уже есть цикл, который выполняет много работы, вы можете вызвать следующую функцию в начале каждой итерации для обновления счетчика:

sp="/-\|"
sc=0
spin() {
   printf "\b${sp:sc++:1}"
   ((sc==${#sp})) && sc=0
}
endspin() {
   printf "\r%s\n" "$@"
}

until work_done; do
   spin
   some_work ...
done
endspin

10
задан user83358 29 June 2009 в 23:37
поделиться

2 ответа

Это просто, если вы используете командную строку imagemagic.

http://www.imagemagick.org/script/convert.php

Используйте "-sepia-tone threshold" аргумент при преобразовании.

Как ни странно, PerlMagick API, похоже, не включает метод для этого напрямую:

http://www.imagemagick.org/script/perl-magick.php

. ..и никаких ссылок на какой-либо метод сепии.

1
ответ дан 3 December 2019 в 15:22
поделиться

Взгляните на то, как он реализован в библиотеке Aforge.Net, код C # здесь .

Основы, кажется,

  • преобразуют его в цветовое пространство Yiq
  • Измените его
  • Преобразование обратно в RGB

Полный ALLOGITHM находится в исходном коде, а также RGB -> Yiq и Yiq -> Преобразования RGB объяснены.

1
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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