![使用 ImageMagick 从命令行截取全彩色屏幕截图](https://linux22.com/image/1501915/%E4%BD%BF%E7%94%A8%20ImageMagick%20%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%88%AA%E5%8F%96%E5%85%A8%E5%BD%A9%E8%89%B2%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
我正在尝试在我的(无头)服务器上自动执行网站截图,如下所示:
启动虚拟 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