Как открывают Specific Part иллюстрации .png в терминале Ubuntu?

Ситуация: начните просматривать чисел в ширине 1:960 и высота, полная в Терминале
Мотивация: программа просмотра изображений Ubuntu по умолчанию открывает число в полной ширине и полной высоте, делая просмотр очень широких чисел трудным; CTRL + - из полного изображения недостаточно, когда Вы выполняете итерации многих изображений где ширина x высота
Дифференциальные условия: Скорректировать Яркостный контраст в Плоскости с Gimp/ImageMagick / …?... Разрешение изображения как Ширина x Высота и Поля в пикселях при каждом повторении

Iteration Image Resolution Left Right Top Bottom
1         960 x    960     110  80    70  100    
2         960 x   1920     230  180   70  100
3         960 x   2880     350  280   70  100
4         960 x   3840     470  380   70  100
5         960 x   4800     590  480   70  100
6         960 x   5760     710  580   70  100
7         960 x   6720     830  680   70  100
8         960 x   7680     950  780   70  100
9         960 x   8640     1070 880   70  100  
10        960 x   9600     1190 980   70  100 

% whtyger and Gimp use to find out the margins http://askubuntu.com/a/803012/25388
  • Данные модельного испытания Разрешения изображения 960x1920 при 2-м повторении, 960x4800 при 5-м повторении, 960x8640 при 9-м повторении и Разрешении 960x9600 при 10-м повторении, соответственно

    enter image description here enter image description here enter image description here enter image description here

Мой псевдокод

#!/bin/bash

OUTRES=$1
ITER=$2
IMAGE=$3

top=70
height=960 

width=$(( 960*${ITER} ))
left=$(( 110+${ITER}*120 ))
right=$(( 80+${ITER}*100 ))
x=$(( ${width}-${left}-${right} ))
y=$(( ${height}-${bottom}-${top} ))

display -geometry ${OUTRES}x${OUTRES} \
        -extract ${x}x${y}+${left}+${top} "$IMAGE"

Попытка с нестабильными полями с display и extract

код whtyger работает, но он имеет некоторые нестабильные поля, т.е. их размер отличается в зависимости от изображения, здесь 5-е повторение

enter image description here enter image description here

  • В изображении Правой стороны Вы видите, что не весь текст шкалы палитры включен в вывод.
  • В изображении Левой стороны Вы видите, что margin_left не равен margin_top.

Причина: MARGIN_T, MARGIN_B, MARGIN_L, MARGIN_R
Зафиксируйте: используйте научную нумерацию с большими повторениями или увеличением MARGIN_R; некоторые корректировки в коде

MARGIN_T=60
MARGIN_B=90
MARGIN_L=$(( -5 + $ITER * 119 ))
MARGIN_R=$(( -20 + $ITER * 95 ))

Вывод: некоторое поле вокруг данных всегда

Рассмотрение комментария whtyger для попытки никаких полей с convert и crop

Для избавлений от полей полностью, можно изменить исходное изображение. Используйте преобразовывают image.png - обрезают SIZE_XxSIZE_Y+SHIFT_X+SHIFT_Y> edited.png и затем используют любое средство просмотра, которое Вы любите. Можно адаптировать мой сценарий к этому, просто заменить дисплей +-extract преобразованием +-crop.

Я заменяю последнюю строку следующим, но неудачным выводом

convert "$IMAGE" -crop ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L}+${MARGIN_T} \ 
    "${IMAGE%.png}_cropped.png"

display -geometry ${OUTRES}x${OUTRES}+${SHIFT}+${SHIFT} \
    -extract ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L}+${MARGIN_T} \
    "${IMAGE%.png}_cropped.png"

rm "${IMAGE%.png}_cropped.png"

Вывод: поле приблизительно на 1 пкс во всех направлениях, левое поле прерывает некоторую информацию от чисел> = 1000.

Система: Linux Ubuntu 16.04 64 бита
Оборудование: MacBook Air, с 2013 серединами

1
задан 13 April 2017 в 15:37

1 ответ

Существует мощный комплект изображения под названием ImageMagick. Среди его инструментов можно найти a display утилита, которая используется, поскольку очевидно из своего имени, отобразить различные графические форматы от консоли. Вот несколько примеров его использования:

display -geometry 500x500 image.png

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

display -extract 300x300+50+50 image.png

Эта команда покажет Вам часть Вашего изображения с размером 300x300 пикселей и со смещением 50 пикселей от его верхнего левого угла.

Можно найти полный список его опций в man display. Также здесь существует обширное руководство.

ImageMagick также обеспечивает другие полезные инструменты. Например, это покажет информацию об изображении (его тип, размеры, размер):

identify "my image.png"

Для отображения изображения без полей, мы должны измерить их для обрезки их позже. Я открыл Ваше фиктивное изображение в Калеке для создания вещей быстрее. Таким образом, поля:

Left   - 1070px
Right  -  880px
Top    -   70px
Bottom -  100px

Если первоначальный размер Вас изображение 8640x960 затем размер изображения без полей будет: X=8640-1070-880=6690 и Y=960-70-100=790, т.е. 6690x790.
И теперь мы объединимся -geometry и -extract опции произвести вывод:

display -geometry 500x500 -extract 6690x790+1070+70 raw.png

(установите размер окна вывода к 500x500, обрежьте изображение к новому размеру 6690x790 и сместите область обрезки на 1070 пкс горизонтально и на 70 пкс вертикально от верхнего левого угла изображения).

Вот то, что я имею (я переместил выбор направо для большей четкости):

Fragment

Все эти вычисления немного утомительны, но если у Вас есть статические поля (кажется, что Ваши изображения производятся автоматически), затем можно вычислить их однажды и обратиться ко всем изображениям. Или даже сделайте некоторый сценарий для автоматизации этого (это - улучшенная версия сценария - это вычисляет итеративное использование identify команда ImageMagick):

#!/bin/bash

if [ $# -lt 2 ] ; then echo "usage: reviewimage output_resolution image_name" ; exit ; fi

OUTRES=$1
IMAGE=$2

# Some sanity or error checks, change as you see fit
if [ $OUTRES -lt 100 ] || [ $OUTRES -gt 1000 ] ; then echo "error: Invalid resolution" ; exit ; fi
if ! [ -e "$IMAGE" ] ; then echo "error: Image doesn't exist" ; exit ; fi

SHIFT=50    # Relative position of output window from top left corner of the desktop
IMAGE_X=$(identify "$IMAGE" | grep -o '[0-9]*x960 ' | cut -d'x' -f1)
IMAGE_Y=960
ITER=$(( $IMAGE_X / 960 ))
MARGIN_T=70
MARGIN_B=100
MARGIN_L=$(( -5 + $ITER * 119 ))
MARGIN_R=$(( -40 + $ITER * 102 ))
EXTRACT_X=$(( $IMAGE_X - $MARGIN_L - $MARGIN_R ))
EXTRACT_Y=$(( $IMAGE_Y - $MARGIN_T - $MARGIN_B ))

display -geometry ${OUTRES}x${OUTRES}+${SHIFT}+${SHIFT} -extract ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L}+${MARGIN_T} "$IMAGE"

Сохраните этот сценарий под именем reviewimage где-нибудь. Затем выполните команды ниже:

sudo cp reviewimage /usr/local/bin/
sudo chmod 755 /usr/local/bin/reviewimage

Теперь можно назвать эту команду от каждой папки с изображениями. Например, для открытия предварительного просмотра изображения raw10.png с размером 700x700:

reviewimage 700 raw10.png

Если имя имеет пробелы в нем, используйте кавычки:

reviewimage 700 "raw 2.png"

Если граничная формула вычисления становится неточной с высокими повторениями, можно использовать массив граничных значений. Скорректируйте каждое граничное значение, как Вы считаете целесообразным. Сценарий ниже показывает принцип. Это заполнено значениями для повторений 1-10, добавьте больше в скобках с пространством как делитель:

#!/bin/bash

if [ $# -ne 1 ] ; then echo "usage: convertimage image_name" ; exit ; fi
if ! [ -e "$1" ] ; then echo "error: Image doesn't exist" ; exit ; fi

IMAGE=$1

IMAGE_X=$(identify "$IMAGE" | grep -o '[0-9]*x960 ' | cut -d'x' -f1)
IMAGE_Y=960
ITER=$(( $IMAGE_X / 960 ))
MARGIN_T=70
MARGIN_B=100
MARGIN_L=(0 114 233 352 471 590 709 828 947 1066 1185)
MARGIN_R=(0 80 180 280 380 480 580 680 780 880 980)
EXTRACT_X=$(( $IMAGE_X - ${MARGIN_L[$ITER]} - ${MARGIN_R[$ITER]} ))
EXTRACT_Y=$(( $IMAGE_Y - $MARGIN_T - $MARGIN_B ))

convert "$IMAGE" -crop ${EXTRACT_X}x${EXTRACT_Y}+${MARGIN_L[$ITER]}+${MARGIN_T} "${IMAGE%.png}_cropped.png"

Этот сценарий выполняет обрезку изображения вместо того, чтобы отобразить его, таким образом, это преобразованное изображение может быть просмотрено в любой программе. Требуется только один параметр - название картинки:

convertimage "raw 9.png"
3
ответ дан 7 December 2019 в 12:38

Другие вопросы по тегам:

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