如何将屏幕截图发送到 STDOUT

如何将屏幕截图发送到 STDOUT

我目前使用以下方法从图像中提取文本:

import png:- | convert png:- -units PixelsPerInch -resample 300 -sharpen 12x6.0 png:- | tesseract -l eng stdin stdout | xsel -ib

但是,import png:-截屏命令对我来说效果不佳。它在某种程度上不太适合 Linux Mint。

在此输入图像描述

是否有任何其他命令可以用来直接将屏幕截图发送到 STDOUT 以进行进一步处理。

答案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

相关内容