Ситуация: начните просматривать чисел в ширине 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-м повторении, соответственно
Мой псевдокод
#!/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-е повторение
Причина: 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 ))
Вывод: некоторое поле вокруг данных всегда
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 серединами
Существует мощный комплект изображения под названием 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 пкс вертикально от верхнего левого угла изображения).
Вот то, что я имею (я переместил выбор направо для большей четкости):
Все эти вычисления немного утомительны, но если у Вас есть статические поля (кажется, что Ваши изображения производятся автоматически), затем можно вычислить их однажды и обратиться ко всем изображениям. Или даже сделайте некоторый сценарий для автоматизации этого (это - улучшенная версия сценария - это вычисляет итеративное использование 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"