1. Faça uma captura de tela como de costume e, em seguida, dimensione automaticamente a última tela que você tirou com uma tecla de atalho.
Colocado sob uma tecla de atalho, o script abaixo irá:
- Encontre a última tela adicionada no seu diretório de captura de tela (que é
~/Picures
, como você mencionou em um comentário) - Redimensione a imagem em uma porcentagem arbitrária
- Renomeie e salve a imagem como
renamed_filename.png
, em quefilename.png
é o nome do arquivo original.
Como usar
-
O script precisa da biblioteca
python3-pil
a ser instalada, o que pode não ser o caso em seu sistema:sudo apt-get install python3-pil
-
Copie o script abaixo em um arquivo vazio, salve-o como
resize_screenshot.py
-
Teste - execute o script fazendo uma captura de tela e, em seguida, execute o script pelo comando:
python3 /path/to/resize_screenshot.py 80
em que
80
é a porcentagem de tamanho de saída desejada. O script agora criou a cópia redimensionada da última captura de tela. -
Se tudo funcionar bem, adicione-o a uma tecla de atalho: Configurações do sistema > Teclado > Atalhos > Atalhos Personalizados. Adicione o comando:
python3 /path/to/resize_screenshot.py 80
O script
#!/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")
Um exemplo
Um exemplo da sua imagem, redimensionada por:
python3 <script> 80
2.Opçãototalmenteautomática
Enquantooscriptacimafazseutrabalhoemumatecladeatalho,vocêpodetorná-lototalmenteautomáticocomumscriptdeplanodefundo.Tudooqueoscriptthyefazéverificarosarquivosnovosem~/Picures
eexecutaraaçãoderedimensionamentocomonoprimeiroscript.
Oscript
#!/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
Como usar
A configuração é exatamente como o script acima (" Como usar "), mas em vez de [4.]
, adicione-o a Startup Applications: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
python3 /path/to/resize_screenshot.py 80
3. Opção totalmente automática com um diálogo de escala
Praticamente o mesmo script, mas agora com um diálogo de escala, imediatamente após você salvou a imagem em ~/Pictures
:
Estaimagemfoiautomaticamenteredimensionadapara80%:)
Oscript
#!/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
Para usar
A configuração é exatamente como acima, exceto o comando, agora sem porcentagem de escala:
python3 /path/to/resize_screenshot.py
Nota
Como sempre, o script de segundo plano praticamente não usa recursos, a menos que o diretório ~/Pictures
seja insanamente grande:).