如何轻松缩放从高DPI屏幕拍摄的屏幕截图?

由于我切换到高DPI显示器,我发布的屏幕截图非常大,如下所示。

有没有办法让它们看起来很正常?
最好是比启动GIMP更快的东西。

特别是,在gnome-screenshot中是否有隐藏选项?

在此处输入图像描述

  • 可能没有完美的工具,因为Ubuntu适应高DPI的方式并不统一(字体,窗口装饰,程序,可能有不同的比例),但一个好的工具会读取这些设置并找出最佳使用比例。
  • 我希望保持仅选择部分屏幕的能力(如在SHIFT + PRTSCR中),并选择文件的名称。
  • 如果重要,我总是将我的截图保存在$HOME/Pictures

1.照常制作屏幕截图,然后使用快捷键自动缩放您拍摄的最新屏幕截图。

放在快捷键下,下面的脚本将:

  1. 在截图目录中找到最后添加的屏幕截图(正如您在评论中提到的那样~/Picures
  2. 将图像缩放为任意百分比
  3. 将图像重命名并保存为renamed_filename.png ,其中filename.png是原始文件名。

如何使用

  1. 该脚本需要安装python3-pil库,在您的系统上可能不是这种情况:

     sudo apt-get install python3-pil 
  2. 将下面的脚本复制到一个空文件中,保存为resize_screenshot.py

  3. 通过截屏测试运行脚本,然后通过命令运行脚本:

     python3 /path/to/resize_screenshot.py 80 

    其中80是所需的输出大小百分比。 该脚本现在创建了最后一个屏幕截图的resize的副本。

  4. 如果一切正常,请将其添加到快捷键:系统设置>键盘>快捷方式>自定义快捷方式。 添加命令:

     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") 

一个例子

您的图片示例,resize:

 python3  

在此处输入图像描述


2.全自动选项

虽然上面的脚本可以在快捷键上完成,但您可以使用后台脚本完全自动完成。 所有thye脚本都检查~/Picures 文件,并执行第一个脚本中的~/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.] ,而是将其添加到启动应用程序:Dash>启动应用程序>添加。 添加命令:

 python3 /path/to/resize_screenshot.py 80 

3.带刻度对话的全自动选项

实际上相同的脚本,但现在使用缩放对话, 您将图像保存到~/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目录非常庞大:)。

使用gnome-screenshot我们无法缩放输出。

为此,我们可以将另一个屏幕截图终端应用程序分配给快捷方式。

50%大小的屏幕截图示例:

  1. Image Magick -s select window or rectangle with mouse -u use currently focused windows

    下面的示例将显示,然后使用scrot的默认文件名(日期/小时/分钟/秒/大小)在我们的图片目录中保存所选区域或窗口的半尺寸(50%)屏幕截图:

     scrot -s -e "convert \$f -resize 50% ~/Pictures/\$f && display \$f && rm \$f"