使用 ImageMagick 从命令行截取全彩色屏幕截图

使用 ImageMagick 从命令行截取全彩色屏幕截图

我正在尝试在我的(无头)服务器上自动执行网站截图,如下所示:

启动虚拟 X 服务器:

Xfvb :1 -pixdepths 16,24,32 -screen 1 1080x1440x24 -nolisten tcp

首先我尝试用 cutycaps 截屏:

DISPLAY=:1 cutycapt --url=http://myurl --out=screenshot.png

这可以使用全彩色,但是 webkit 引擎太旧,无法支持我们的 CSS,因此网页无法正确显示。

因此我尝试了 Firefox 和 ImageMagick:

nohup firefox http://myurl &
sleep 4
import -display :1 -window root screenshot.png

遗憾的是,生成的图像只有 16?256? 种颜色。这显然不够。

因此我尝试了 xwd:

xwd -root -display :1 -out screenshot.xwd

还是没运气,还是只有 16 种颜色。有什么想法吗?

答案1

我找到了一个解决方案。出于某种原因,只有当 Xfvb 在显示器 :0 上运行时,全色才有效。因此这有效:

# Run Xfvb
Xfvb :0 -screen 0 1080x1440x24 -nolisten tcp &

export DISPLAY=:0

# Start Firefox.
nohup firefox http://fipla.spiff.xyz:8000/calendar &
FFPID=$!
sleep 3

# Resize the window.
WINDOW_ID=`xdotool search --onlyvisible firefox`
echo Window id is $WINDOW_ID
xdotool windowmove $WINDOW_ID 0 0
xdotool windowsize $WINDOW_ID 1080 1440
sleep 1

# Take screenshot.
import -window root -crop 1067x1380+0+72 $DIR/screenshot1.png

kill $FFPID
rm nohup.out

相关内容