答案1
我记得有类似的问题scrot
。在这种情况下,我加了一个睡眠,就很好了!对我来说工作得很好,但我不在 Linux Mint 上。
{ import png:-; sleep 0.1 ;} | convert png:- -units PixelsPerInch -resample 300 -sharpen 12x6.0 png:- | tesseract -l eng stdin stdout | xsel -ib
另外,你可以尝试使用 scrot 类似的东西:
scrot -s aoeu.png -e 'tesseract -l eng $f stdout | xsel -ib; rm -f $f'
包含评论输入和答案的版本J·克雷文斯
scrot -s -f -q 100 --silent - |
convert - -units PixelsPerInch -resample 300 -sharpen 12x6.0 - |
tesseract -l eng stdin stdout |
xsel -ib
答案2
您可以将 scrot 与 - 一起使用来进行标准输出,但它会默认保存 png 文件。只需添加:
scrot -q 100 --silent - |
应该正是它正在寻找的东西。
更新:要使用 1.7 以下的版本执行此操作,因为它不接受 - 作为标准输出,因此会有点棘手。这是一个 shell 脚本:
#!/bin/bash
# Create a temp working directory
temp_file="$HOME/screenshot_$(date +"%Y_%m_%d-%H_%M_%S").png"
# Take a screenshot to the temp file
scrot -zfq 100 --silent "$temp_file"
# Copy the image file to the clipboard using xclip
xclip -selection clipboard -t image/png -i "$temp_file"
echo -e "\nScreenshot saved to:\n"$temp_file"\n"
exit 0
使用xclip
,即可粘贴/输出。管道到xsel
等应该工作相同。
保存到screenshot.sh
然后,chmod +x screenshot.sh
最后,运行./screenshot.sh
提示:使用别名在单个命令中运行脚本。
如何创建 BASH 别名
alias sshot='bash -c "/path/to/script/screenshot.sh"'
现在您只需输入以下内容即可截取屏幕截图:sshot
答案3
KDE 的spectacle
屏幕截图工具允许您输出到 stdout,但只能使用/dev/stdout
而不是-
:
spectacle --background --fullscreen --output /dev/stdout
或者,使用简短的选项:spectacle -bfo /dev/stdout