捕获屏幕顶部面板的 png 时的颜色问题

捕获屏幕顶部面板的 png 时的颜色问题

我想从 bash 脚本中捕获一个窗口作为 png,使用窗口的ID。在本例中,窗口是顶部面板。使用gnome-screenshot颜色是正确的,按照此图像...(此图像与下图大小不同,因此请忽略底部的黑线)

在此输入图像描述

但是,当我通过捕获面板时import或者 xwd+ convert,我得到以下图像..

在此输入图像描述

为什么我会出现这种色差?

import两者convert都属于该imagemagick包...

我在 Ubuntu 存储库中没有找到任何其他可以通过其捕获窗口的东西ID...所以我被困住了。 (gnome-screenshot没有该功能)...很高兴知道这里发生了什么(例如,与透明的图像,我对此知之甚少)...但无论如何,这只是一个推荐解决方法捕获实用程序可能会成功......它必须能够通过它的ID。   

这是我如何制作和查看图像捕获的示例。

import -window "$(wmctrl -l |grep "Top Expanded Edge Panel" |awk '{print $1}')" screen.png  
display screen.png

答案1

对于从控制台制作屏幕,也有scrot。由于它不是来自imagemagick包的工具,我认为颜色有机会没问题。

有一个问题 -scrot只能截取全屏屏幕截图,因此我们将截取全屏屏幕截图,然后剪切出我们需要的窗口区域。当然,为了剪掉它,我们不会使用imagemagick而是使用包中的工具netpbm

#!/bin/bash
unset x y w h
eval $(xwininfo -id $(wmctrl -l |grep "Top Expanded Edge Panel" |awk '{print $1}') |
        sed -ne "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \
             -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \
             -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \
             -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" )
scrot scrot.pnm
    < scrot.pnm pnmcut -left $x -top $y -width $w -height $h | pnmtopng > scrot_cropped.png
display scrot_cropped.png

您能检查一下是否scrot可以制作颜色不变的屏幕截图吗?如果是,该脚本应该完成工作并获取您想要的窗口屏幕......


脚本灵感来自 @fred 的答案:如何准确找到窗户尺寸和位置(包括装饰)?和@JRW:用于切片图像的 Oneliner?

相关内容