#image #terminal #utility #graphics #cli

app cliblur

一个更快、更有用的图像模糊工具

6 个版本 (3 个重大更新)

0.4.0 2022年6月25日
0.3.1 2022年6月25日
0.2.0 2022年6月25日
0.1.3 2022年6月25日

#2806命令行工具

Download history 5/week @ 2024-07-05 59/week @ 2024-07-26

每月64次 下载

EUPL-1.2

57KB
189

cliblur

codecov

一个小巧快速的 Rust 工具,可以具有以下功能来模糊图像:

  • 缩放因子
  • 缩小过滤器
  • 放大过滤器
  • 灰度化
  • 仅模糊特定区域

示例

Example blur image

如你所见,默认行为是按 scale down 将图像缩小 25%,对于缩小,将应用高斯过滤器。缩小后,使用 nearest filter 进行放大。这种行为使得文本难以阅读,但图像本身非常清晰!<3
别担心,你可以更改缩小和放大过滤器! :)

使用这个工具的好处是什么?

当我锁定我的电脑或笔记本电脑时,我喜欢截图当前状态,模糊图像,并将模糊后的图像设置为锁屏。所以,这就是它,只是一个模糊图像的小工具。 :)

如何模糊和锁定屏幕

如果你使用 i3,你可以安装 cliblur 并创建一个小 bash 脚本来创建截图,模糊它并锁定你的屏幕。 :)

#!/usr/bin/env bash

cd "$(dirname "$0")"

IMAGE=/tmp/lock.png

scrot -q 100 $IMAGE
cliblur $IMAGE
i3lock -i $IMAGE
rm $IMAGE

为什么不用 convert?

因为 convert 很慢...我是说真的很慢...我喜欢截图、模糊并设置为我的锁定屏幕,但 convert 太慢了。在 16 个核心上需要 2 秒钟(是的,所有的都在运行...)。所以我创建了这个小工具,它只需 ~460ms 就可以完成模糊效果,并且只需要一个线程(而不是 16 个线程的 100%)。 :)
下一个原因,模糊效果本身,正如你在示例图像中所看到的,图像非常清晰,但也被模糊了。这是因为我用高斯缩小图像,用最近邻放大图像。所以它是模糊了一个清晰的图像,没有暴露任何文本!太棒了!<3

安装

只需用 crates 安装它,就这么简单! :)

cargo install cliblur

你也可以安装编译好的版本或自己编译。 :)
请参阅“安装(高级)”章节。 :3

如何使用它

它默认情况下使用默认参数即可运行。你只需要运行命令并指定文件

cliblur /tmp/lock.png

请注意,如果您只设置了输入文件,相同的文件将被覆盖!您可以通过写入目标文件来避免这种情况,就像您在这里看到的那样。

cliblur /tmp/lock.png /tmp/bluredlock.png

您可以修改模糊效果的设置。有一个可以更改的 scale,这样模糊效果就会增加或减少。顺便说一句,您还可以更改放大和缩小滤镜。如果您使用 gaussian 滤镜为 scale downnearestscaling up,看起来有点 8 位的样子。如果您只想模糊图像,您可以使用 gaussian 滤镜为 scale downscale up。您还可以指定模糊效果应该开始和结束的位置,请参阅有关 -x--- 的文档以获取更多信息。只需稍微尝试一下,直到找到合适的东西。文档可以在 --help 中找到。 :)

$ cliblur --help

cliblur 0.3.1
Daniél Kerkmann <[email protected]>
A faster and more usefule image blur tool.

USAGE:
    cliblur [OPTIONS] <INPUT_FILE> [OUTPUT_FILE]

ARGS:
    <INPUT_FILE>     Input file which will be used
    <OUTPUT_FILE>    Specify the output file, otherwise the input file will be overwritten

OPTIONS:
    -d, --debug
            Set logging level to debug

    -g, --grayscale
            Remove color from image

    -h, --height <HEIGHT>
            height of the blur effect, otherwise it will blur till the end

        --help
            Print help information

    -l, --license
            Print license information

    -r, --resize-down-filter <RESIZE_DOWN_FILTER>
            Will apply the filter on resize down [default: gaussian] [possible values: catmull-rom,
            gaussian, lanczos3, nearest, triangle]

    -R, --resize-up-filter <RESIZE_UP_FILTER>
            Will apply the filter on resize up [default: nearest] [possible values: catmull-rom,
            gaussian, lanczos3, nearest, triangle]

    -s, --resize-scale <RESIZE_SCALE>
            Set the resize scale ratio from resizing it down and up [default: 25]

    -V, --version
            Print version information

    -w, --width <WIDTH>
            width of the blur effect, otherwise it will blur till the end

    -x, --x <X>
            x coordinate where the blur should start [default: 0]

    -y, --y <Y>
            y coordinate where the blur should start [default: 0]

安装(高级)

安装编译版本(gitlab)

真的很容易!真的,相信我。 :3

# download the binary file
curl -L https://gitlab.com/kerkmann/cliblur/-/jobs/artifacts/main/raw/cliblur\?job\=release --output cliblur
# make file executable
chmod +x cliblur
# just copy the binary file to `/usr/local/bin/cliblur`
sudo cp cliblur /usr/local/bin/cliblur

自行构建(从源代码)

您不相信预构建的二进制文件?幸运的是,您可以自己构建它! :3

# clone the project
git clone https://gitlab.com/kerkmann/cliblur
# change into the directory
cd cliblur
# compile it yourself
cargo build --release
# (optional) make the binary smaller
upx --best --lzma target/release/cliblur
# make file executable
chmod +x target/release/cliblur
# just copy the binary file to `/usr/local/bin/cliblur`
sudo cp target/release/cliblur /usr/local/bin/cliblur

要做的几件事

  • 更好的错误处理而不是恐慌
  • 测试

依赖关系

~7.5MB
~108K SLoC