Depuis que je suis passé sur un écran haute résolution, les captures d'écran que je publie sont maladroites, exemple ci-dessous.
Y a-t-il un moyen de les rendre rapidement normales?
De préférence, quelque chose de plus rapide que de lancer GIMP.
En particulier, y a-t-il une option cachée pour cela dans gnome-screenshot?
$HOME/Pictures
.Placé sous une touche de raccourci, le script ci-dessous va:
~/Picures
, comme vous l'avez mentionné dans un commentaire).renamed_filename.png
, où filename.png
représente le nom de fichier d'origine.Le script nécessite l'installation de la bibliothèque python3-pil
, ce qui peut ne pas être le cas sur votre système:
Sudo apt-get install python3-pil
Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous le nom resize_screenshot.py
Test: exécutez le script en effectuant une capture d'écran, puis exécutez-le à l'aide de la commande suivante:
python3 /path/to/resize_screenshot.py 80
où 80
est le pourcentage de taille de sortie souhaité. Le script a maintenant créé la copie redimensionnée de la dernière capture d'écran.
Si tout fonctionne correctement, ajoutez-le à une touche de raccourci: Paramètres système> Clavier> Raccourcis> SHortcuts personnalisés. Ajoutez la commande:
python3 /path/to/resize_screenshot.py 80
#!/usr/bin/env python3
import os
import sys
from PIL import Image
percent = float(sys.argv[1])/100
pic_list = []
# list all .png files in ~/Pictures
pic_dir = os.environ["HOME"]+"/Pictures"
files = [pic_dir+"/"+f for f in os.listdir(pic_dir) if \
all([f.endswith(".png"), not f.startswith("resized")])]
# create a sorted list + the creation date of relevant files
pics = [[f, int(os.stat(f).st_ctime)] for f in files]
pics.sort(key=lambda x: x[1])
# choose the latest one
resize = pics[-1][0]
# open the image, look up its current size
im = Image.open(resize)
size = im.size
# define the new size; current size * the percentage
newsize = [int(n * percent) for n in size]
# resize the image, save it as renamed file (keeping original)
im.thumbnail(newsize, Image.ANTIALIAS)
newfile = pic_dir+"/resized_"+resize.split("/")[-1]
im.save(newfile, "png")
Un exemple de votre image, redimensionnée par:
python3 <script> 80
Alors que le script ci-dessus fait son travail sur une touche de raccourci, vous pouvez le rendre complètement automatique avec un script en arrière-plan. Tout ce que fait le script, c’est vérifier les nouveaux fichiers dans ~/Picures
et exécuter l’action de redimensionnement comme dans le premier script.
#!/usr/bin/env python3
import os
import sys
from PIL import Image
import time
percent = float(sys.argv[1])/100
pic_dir = os.environ["HOME"]+"/Pictures"
def pics_list(dr):
return [pic_dir+"/"+f for f in os.listdir(pic_dir) if \
all([f.endswith(".png"), not f.startswith("resized")])]
def scale(f):
#open the image, look up its current size
im = Image.open(f)
size = im.size
# define the new size; current size * the percentage
newsize = [int(n * percent) for n in size]
# resize the image, save it as renamed file (keeping original)
im.thumbnail(newsize, Image.ANTIALIAS)
newfile = pic_dir+"/resized_"+f.split("/")[-1]
im.save(newfile, "png")
p_list1 = pics_list(pic_dir)
while True:
time.sleep(2)
p_list2 = pics_list(pic_dir)
for item in p_list2:
if not item in p_list1:
scale(item)
p_list1 = p_list2
La configuration est identique au script ci-dessus (" Comment utiliser "), mais au lieu de [4.]
, ajoutez-le à Applications de démarrage: Tableau de bord > Applications de démarrage> Ajouter. Ajoutez la commande:
python3 /path/to/resize_screenshot.py 80
Pratiquement le même script, mais maintenant avec un dialogue de balance, immédiatement après vous avez enregistré l'image sur ~/Pictures
:
Cette capture d'écran a été automatiquement redimensionnée à 80%:)
#!/usr/bin/env python3
import os
import sys
from PIL import Image
import time
import subprocess
# --- change if you like the default scale percentage, as proposed by the slider:
default_percent = 80
# --- change if you like the screenshot directory
pic_dir = os.environ["HOME"]+"/Pictures"
# ---
def pics_list(dr):
return [pic_dir+"/"+f for f in os.listdir(pic_dir) if \
all([f.endswith(".png"), not f.startswith("resized")])]
def scale(f, size):
#open the image, look up its current size
im = Image.open(f)
currsize = im.size
# define the new size; current size * the percentage
newsize = [int(n * size) for n in currsize]
# resize the image, save it as renamed file (keeping original)
im.thumbnail(newsize, Image.ANTIALIAS)
newfile = pic_dir+"/resized_"+f.split("/")[-1]
im.save(newfile, "png")
p_list1 = pics_list(pic_dir)
while True:
time.sleep(2)
p_list2 = pics_list(pic_dir)
for item in p_list2:
if not item in p_list1:
try:
size = subprocess.check_output([
"zenity", "--scale",
"--value="+str(default_percent),
]).decode("utf-8")
scale(item, float(size)/100)
except subprocess.CalledProcessError:
pass
p_list1 = p_list2
La configuration est exactement comme ci-dessus, à part la commande, maintenant sans pourcentage d'échelle
python3 /path/to/resize_screenshot.py
Comme toujours, le script d’arrière-plan n’utilise pratiquement aucune ressource, à moins que votre répertoire ~/Pictures
ne soit insanement énorme :).
Avec gnome-screenshot , nous ne pouvons pas redimensionner la sortie.
Pour le faire automatiquement, nous pouvons affecter un autre application de terminal de capture d'écran à un raccourci.
Exemples de captures d’écran à 50%:
Image Magick import
-resize
au pourcentage de l'original
prendre une capture d'écran de tout le bureau:
import -window root -resize 50% [-delay <value>] shot.png
prendre une capture d'écran d'une fenêtre (sélectionnable avec la souris):
import -window $(xdotool selectwindow) resize 50% shot.png
prendre une capture d'écran d'une fenêtre et afficher le résultat:
import -window $(xdotool selectwindow) -resize 50% shot.png && display shot.png
charger la capture d'écran dans un autre lecteur externe (par exemple, eog
)
import -window $(xdotool selectwindow) -resize 50% shot.png && eog shot.png
scrot (page de manuel) sortie sur Image Magic convert
pour sélectionner une zone d'écran
scrot <options> -e "convert \$f -resize 50% shot.png && rm \$f"
<options>
-s select window or rectangle with mouse
-u use currently focused windows
L'exemple ci-dessous affiche, puis enregistrez une capture d'écran demi-taille (50%) d'une zone ou d'une fenêtre sélectionnée en utilisant le nom de fichier par défaut de scrot (date/heure/minute/seconde/taille) dans notre répertoire d'images:
scrot -s -e "convert \$f -resize 50% ~/Pictures/\$f && display \$f && rm \$f"