Так как я переключился на Высокий дисплей DPI, снимки экрана, которые я отправляю, являются неловко большими, пример ниже.
Существует ли способ быстро заставить их выглядеть нормальными?
Предпочтительно что-то быстрее, чем разжигание GIMP.
В частности, есть ли скрытая опция для этого в снимке экрана гнома?
$HOME/Pictures
.Помещенный под сочетанием клавиш, сценарием ниже желания:
~/Picures
, как Вы упомянули в комментарии),renamed_filename.png
, где filename.png
исходное имя файла.Для сценария нужно python3-pil
библиотека, которая будет установлена, который не мог бы иметь место в Вашей системе:
sudo apt-get install python3-pil
Скопируйте сценарий ниже в пустой файл, сохраните его как resize_screenshot.py
Тестовый прогон сценарий путем делания снимка экрана и впоследствии запущенный скрипт командой:
python3 /path/to/resize_screenshot.py 80
где 80
желаемый выходной процент размера. Сценарий теперь создал измененную копию последнего снимка экрана.
Если все хорошо работает, добавьте его к сочетанию клавиш: Параметры настройки системы> Клавиатура> Ярлыки> Пользовательские Ярлыки. Добавьте команду:
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")
Пример Вашего изображения, измененного:
python3 <script> 80
В то время как сценарий выше делает свое задание на сочетании клавиш, можно сделать его полностью автоматически с фоновым сценарием. Весь thye сценарий делает проверить на новые файлы в ~/Picures
, и выполните действие перемасштаба как в первом сценарии.
#!/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
Установка точно как сценарий выше ("Как использовать"), но вместо [4.]
, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:
python3 /path/to/resize_screenshot.py 80
Практически тот же сценарий, но теперь с диалогом масштаба, сразу после того, как Вы сохранили образ к ~/Pictures
:
Этот снимок экрана был автоматически изменен к 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
Установка точно как выше, кроме команды, теперь без процента масштаба:
python3 /path/to/resize_screenshot.py
Как всегда, фоновый сценарий практически не использует ресурсов, если Ваш ~/Pictures
каталог безумно огромен :).
Со снимком экрана гнома мы не можем масштабировать вывод.
Чтобы сделать так автоматически, мы можем присвоить другое терминальное приложение снимка экрана ярлыку.
Примеры для снимков экрана в 50% размером:
Изображение Magick
import
-resize
к проценту оригинала
сделайте снимок экрана целого рабочего стола:
import -window root -resize 50% [-delay <value>] shot.png
сделайте снимок экрана окна (можно выбрать мышью):
import -window $(xdotool selectwindow) resize 50% shot.png
сделайте снимок экрана результата дисплея и окна:
import -window $(xdotool selectwindow) -resize 50% shot.png && display shot.png
загрузите снимок экрана в любое другое внешнее средство просмотра (например. eog
)
import -window $(xdotool selectwindow) -resize 50% shot.png && eog shot.png
scrot
(страница справочника) вывод для Обработки изображений Волшебства convert
для выбора экранной области
scrot <options> -e "convert \$f -resize 50% shot.png && rm \$f"
<options>
-s select window or rectangle with mouse
-u use currently focused windows
Ниже примера отобразит, затем сохранит полуразмерный (50%-й) снимок экрана выбранной области или окна с помощью имени файла scrot по умолчанию (дата/час/минута/второй/размер) в нашем каталоге изображений:
scrot -s -e "convert \$f -resize 50% ~/Pictures/\$f && display \$f && rm \$f"