ScreenshotScribbler (scrscr)

一个命令行工具 scrscr 和一个库,它创建一个与给定屏幕截图尺寸相同的新图像,添加背景,缩小原始屏幕截图的尺寸,将其美观地放置,并在其旁边添加一个标题。

安装

可以通过 Homebrew 轻松安装 scrscr 命令,或者通过克隆存储库并使用 Makefile,或者手动构建所有内容。

Homebrew

Tap 这个存储库

$ brew tap goeldner/formulae

安装包

$ brew install scrscr

Make

如果您想使用 make,则为此项目定义了一个 Makefile。克隆存储库,进入该文件夹,然后执行以下命令以将 scrscr 命令安装到您的 /usr/local/bin 文件夹中

$ make clean install

构建

您也可以手动构建和安装。克隆存储库,进入该文件夹,然后执行

$ swift build --configuration release
$ cp -f .build/release/scrscr /usr/local/bin/scrscr

用法

默认情况下,该工具将标题放置在图像的顶部,将屏幕截图放置在图像的底部。它使用白色背景,黑色标题和屏幕截图后面的微妙阴影。

以下示例使用默认设置

$ scrscr --caption "Scribble this caption" --screenshot example-input.png --output example-output.png

可以通过使用多个命令行选项来自定义布局。显示有关所有可用命令和选项的帮助

$ scrscr --help
$ scrscr help decorate

以下示例定义了所有基本选项,包括它们的默认值

$ scrscr decorate \
    --caption "Example output with default options and long caption" \
    --screenshot example-input.png \
    --output example-output-default.png \
    --layout "caption-before-screenshot" \
    --background-color "#FFFFFF" \
    --background-image-scaling "stretch-fill" \
    --background-image-alignment "middle center" \
    --caption-size-factor 0.25 \
    --caption-alignment "center" \
    --caption-color "#000000" \
    --caption-font-name "SF Compact" \
    --caption-font-style "Bold" \
    --caption-font-size 32 \
    --caption-rotation "0" \
    --screenshot-size-factor 0.85 \
    --screenshot-corner-radius 5 \
    --screenshot-shadow-size 5 \
    --screenshot-shadow-color "#000000" \
    --screenshot-border-size 0 \
    --screenshot-border-color "#000000" \
    --screenshot-rotation "0" \
    --verbose

另请查看 examples.sh 脚本和 Examples 文件夹,以获取更多使用场景。

布局类型

有四种不同的布局类型可用,可以使用 --layout 选项定义

所有布局都可以进一步自定义,即选项 --caption-size-factor--screenshot-size-factor 能够实现更多变化。

四种不同布局类型的示例

Layout: caption-before-screenshot   Layout: caption-after-screenshot   Layout: caption-between-screenshots   Layout: screenshot-only

颜色和渐变

在命令行上定义颜色受到广泛使用的 CSS 语法的子集的启发。

可以使用十六进制语法定义单个颜色,如下所示,其中每两位数字定义颜色的红色,绿色和蓝色部分

--background-color "#0099FF"

某些选项还支持渐变,即 --caption-color--background-color--screenshot-border-color。对于渐变,必须至少定义两种颜色。默认情况下,颜色从上到下渲染。

线性渐变

--background-color "linear-gradient(#FF0000, #FFA500, #FFFF00, #00FF00, #0000FF, #FF00FF)"

径向渐变

--background-color "radial-gradient(#FF0000, #0000FF)"

通过在颜色参数列表之前使用可选的方向参数来指定渐变方向。默认情况下,这是“to-bottom”,但可以是水平方向(即“to-right”或“to-left”),垂直方向(即“to-bottom”或“to-top”)或对角线方向(即“to-bottom-right”,“to-bottom-left”,“to-top-right”或“to-top-left”)

--background-color "linear-gradient(to-bottom-right, #FFFFFF, #000000)"

通过定义在屏幕截图后面渲染的背景图像,可以实现更多专门的背景,例如使用以下选项

--background-image Examples/example-background.jpg
--background-image-scaling "aspect-fill"
--background-image-alignment "bottom"    

也可以将标题颜色定义为渐变

--caption-color "linear-gradient(to-right, #FF0000, #0000FF)"

渐变和背景图像的示例

Background: linear-gradient   Background: radial-gradient   Caption and background: linear-gradient   Background: background-image

旋转

可以使用选项“caption-rotation”和“screenshot-rotation”旋转标题文本和屏幕截图。

角度可以用度数(例如“45deg”)或弧度(例如“-3.1415rad”)指定。默认为“0”。正角度导致顺时针旋转,负值导致逆时针旋转。

--caption-rotation "-5deg"
--screenshot-rotation "5deg"

旋转标题和屏幕截图的示例

Rotated caption and screenshots

配置文件

可以从 JSON 文件加载所有选项,而不是在命令行上定义它们。使用 --config 选项指定 JSON 文件的路径。首先应用文件中的设置,并且可以通过命令行中的设置覆盖它们。

所有设置都具有与命令行上相同的名称,但以驼峰式书写。支持部分 JSON 文件,因此可以在文件中仅定义一小部分选项。所有缺失的选项均以默认值提供。

以下示例在 JSON 中定义了所有选项及其默认值

{
  "layout" : {
    "layoutType" : "caption-before-screenshot"
  },
  "screenshot" : {
    "screenshotBorderColor" : "#000000",
    "screenshotBorderSize" : 0,
    "screenshotCornerRadius" : 5,
    "screenshotRotation" : "0",
    "screenshotShadowColor" : "#000000",
    "screenshotShadowSize" : 5,
    "screenshotSizeFactor" : 0.85
  },
  "background" : {
    "backgroundColor" : "#FFFFFF",
    "backgroundImageAlignment" : "middle center",
    "backgroundImageScaling" : "stretch-fill"
  },
  "caption" : {
    "captionAlignment" : "center",
    "captionColor" : "#000000",
    "captionFontName" : "SF Compact",
    "captionFontSize" : 32,
    "captionFontStyle" : "Bold",
    "captionRotation" : "0",
    "captionSizeFactor" : 0.25
  }
}

关于

我开始开发这个工具作为一个副项目,因为我不想以任何理由使用 fastlane,它通过其 frameit 插件提供类似的东西。我想要一个简单的命令行工具,我可以简单地在我的脚本(已经自动生成屏幕截图)中调用它,以便为 App Store 美化它们。

该项目使用纯 CoreGraphics 和 CoreText API 进行布局(没有 AppKit 或 UIKit),因此它应该具有很好的可移植性。

会不时有更新和新功能,我会尽量继续努力,只要我自己使用它。

咖啡

如果您喜欢这个项目,您可以给我买一杯咖啡或成为我的 GitHub 赞助者

Buy Me A Coffee   GitHub Sponsor