Situation: commencer à parcourir les chiffres à la largeur 1: 960 et à la hauteur complète dans le terminal
Motivation: la visionneuse d'images par défaut d'Ubuntu ouvre la figure à pleine largeur et pleine hauteur , ce qui rend difficile la navigation sur des figures très larges; son CTRL
+ -
de l'image complète ne suffit pas lorsque vous parcourez de nombreuses images où largeur x hauteur
Conditions différentielles: Pour régler le contraste de luminosité dans le plan avec Gimp/ImageMagick /…? , ... Résolution d'image sous la forme Largeur x Hauteur et marges en pixels à chaque itération
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
Données de test factices de la résolution d'image 960x1920 à la 2e itération, 960x4800 à la 5e itération, 960x8640 à la 9e itération et la résolution 960x9600 à la 10e itération, respectivement
Mon pseudocode
#!/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
et extract
le code de whtyger fonctionne mais il a des marges instables c'est à dire que leur taille diffère en fonction de l'image, ici 5ème itération
Raison: MARGIN_T
, MARGIN_B
, MARGIN_L
, MARGIN_R
Correction: utilisez la numérotation scientifique avec des itérations plus grandes ou augmentez MARGIN_R
; quelques ajustements dans le code
MARGIN_T=60
MARGIN_B=90
MARGIN_L=$(( -5 + $ITER * 119 ))
MARGIN_R=$(( -20 + $ITER * 95 ))
Sortie: une certaine marge autour des données toujours
convert
et crop
Pour vous débarrasser complètement des marges, vous pouvez modifier l'image d'origine. Utilisez convert image.png -crop SIZE_XxSIZE_Y + SHIFT_X + SHIFT_Y> modified.png, puis utilisez la visionneuse de votre choix. Vous pouvez adapter mon script pour cela, il suffit de remplacer display + -extract par convert + -crop.
Je remplace la dernière ligne par la sortie suivante mais infructueuse
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"
Sortie: environ 1 px de marge dans toutes les directions, la marge de gauche coupe quelques informations à partir de nombres> = 1000.
Système: Linux Ubuntu 16.04 64 bits
Matériel: Macbook Air 2013-mid
Il existe une puissante suite d'images appelée ImageMagick. Parmi ses outils, vous trouverez un utilitaire display
, qui est utilisé, comme son nom l'indique, pour afficher différents formats graphiques à partir de la console. Voici plusieurs exemples de son utilisation:
display -geometry 500x500 image.png
Cela ouvrira votre image dans la fenêtre avec la taille sélectionnée. De plus, une petite fenêtre représentant l'image complète sera ouverte à proximité, vous pouvez donc déplacer le rectangle de sélection pour afficher les parties souhaitées de votre image.
display -extract 300x300+50+50 image.png
Cette commande vous montrera la partie de votre image avec la taille de 300x300 pixels et avec le décalage de 50 pixels à partir de son coin supérieur gauche.
Vous pouvez trouver la liste complète de ses options dans man display
. Il y a aussi un manuel complet ici .
ImageMagick fournit également d'autres outils utiles. Par exemple, cela affichera les informations sur l'image (son type, ses dimensions, sa taille):
identify "my image.png"
Afin d'afficher votre image sans les marges, nous devons les mesurer pour les recadrer plus tard. J'ai ouvert votre image factice dans Gimp pour accélérer les choses. Les marges sont donc:
Left - 1070px
Right - 880px
Top - 70px
Bottom - 100px
Si la taille d'origine de votre photo est 8640x960
alors la taille de l'image sans les marges sera: X=8640-1070-880=6690
et Y=960-70-100=790
, c'est à dire. 6690x790
.
Et maintenant, nous allons combiner -geometry
et -extract
options pour produire la sortie:
display -geometry 500x500 -extract 6690x790+1070+70 raw.png
(définissez la taille de la fenêtre de sortie sur 500x500, recadrez l'image à la nouvelle taille 6690x790 et déplacez la zone de recadrage de 1070 pixels horizontalement et de 70 pixels verticalement à partir du coin supérieur gauche de l'image).
Voici ce que j'ai (j'ai déplacé la sélection vers la droite pour plus de clarté):
Tous ces calculs sont un peu fastidieux, mais si vous avez des marges statiques (il semble que vos images soient produites automatiquement), vous pouvez les calculer une fois et les appliquer à toutes vos images. Ou même créez un script pour automatiser cela (c'est une version améliorée du script - il calcule l'itération en utilisant la commande identify
d'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"
Enregistrez ce script sous le nom reviewimage
quelque part. Exécutez ensuite les commandes ci-dessous:
Sudo cp reviewimage /usr/local/bin/
Sudo chmod 755 /usr/local/bin/reviewimage
Vous pouvez maintenant appeler cette commande à partir de chaque dossier contenant vos images. Par exemple, pour ouvrir un aperçu de votre image raw10.png
avec la taille de 700x700
:
reviewimage 700 raw10.png
Si le nom contient des espaces, utilisez des guillemets:
reviewimage 700 "raw 2.png"
Si la formule de calcul de la marge devient imprécise avec des itérations élevées, vous pouvez utiliser un tableau de valeurs de marge. Ajustez chaque valeur de marge comme bon vous semble. Le script ci-dessous montre le principe. Il est rempli avec les valeurs pour les itérations 1-10, ajoutez plus à l'intérieur des crochets avec l'espace comme séparateur:
#!/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"
Ce script effectue le recadrage de l'image au lieu de l'afficher, de sorte que cette image convertie peut être affichée dans n'importe quel programme. Il n'a besoin que d'un paramètre - nom de l'image:
convertimage "raw 9.png"