Вы можете обращаться с числами как со строками, потому что они, по сути, таковы и есть*:
$ number=42
$ echo "${number:1:1}"
2
$ echo "${number:0:1}"
4
*Если вы не объявите переменную как целое число (, например, в Bash ), в этом случае она преобразуется в десятичное число , прежде чем вы сможете обрабатывать ее как строку. Например, восьмеричное число:
$ declare -i number=042
$ echo "${number:0:1}"
3
$ echo "${number:1:1}"
4
Ничто из этого не относится к десятичным числам или числам с плавающей запятой, которые *оболочки nix не поддерживают напрямую. Для этого вам нужно изучить bc
.
Вы также можете трактовать строку как массив символов разными способами.
Обрезка изображений с помощью инструментов командной строки , упомянутая в комментариях, является хорошей начальной ссылкой, но в ней отсутствует очень удобный вариант с процентами в Width x Height
, который вам как раз и нужен.
convert -crop 100%x100%+0-20 original.png cropped.png
Конечно, замените 20
фактическим x
значением смещения по вертикали.
Я нашел аргументы в процентах в Как обрезать изображение с помощью imagemagick convert .
Использование инструментов netpbm
:
Преобразование изображения в портативный формат Anymap, удаление 10 пикселей (-1 -10 )снизу и преобразование обратно во входной формат.
PNG:
pngtopnm input.png | pnmcut -bottom -11 | pnmtopng > output.png
JPEG, качество вывода установлено на 70%:
jpegtopnm input.jpg | pnmcut -bottom -11 | pnmtojpeg --quality=70 > output.jpg
ТИФФ:
tifftopnm input.tiff | pnmcut -bottom -11 | pnmtotiff > output.tiff
Вы поняли идею для других форматов. См. справочные страницы программ для всех параметров выходного формата, таких как сжатие, прозрачность, количество бит на пиксель и т. д.