Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/incerrygit/img-go
Markdown图片辅助工具,它能非常简单的将Markdown文件中的图片提取、加水印、压缩并上传到指定的图床。
https://github.com/incerrygit/img-go
Last synced: 23 days ago
JSON representation
Markdown图片辅助工具,它能非常简单的将Markdown文件中的图片提取、加水印、压缩并上传到指定的图床。
- Host: GitHub
- URL: https://github.com/incerrygit/img-go
- Owner: InCerryGit
- License: apache-2.0
- Created: 2022-08-19T13:59:59.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-25T05:11:05.000Z (almost 2 years ago)
- Last Synced: 2024-10-13T15:06:41.360Z (about 1 month ago)
- Language: C#
- Size: 2.17 MB
- Stars: 40
- Watchers: 2
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IMG-GO
[TOC]
**国内镜像地址:https://gitee.com/InCerryGit/img-go**
## 一、简介
这个功能是笔者平时用来写文章的工具,使用Markdown编辑插入的图片会默认保存到本地备份,发布到简书、博客园及其他网站时需要将Markdown文件内的图片上传,**非常繁琐**!! 而这个工具能非常简单的将Markdown文件中的图片**提取、加水印、压缩和上传到指定的图床**,另外也支持对图片文件及文件夹处理。目前支持以下图床:
| 对象存储 | 控制台及配置名称 | img-go支持版本 |
|-------------|-----------|------------|
| 本地存储 | Local | 1.0.0 |
| 阿里云 OSS存储 | AliyunOss | 1.0.0 |
| 七牛云 Kodo存储 | Qiniu | 1.0.1 |
| 腾讯云 Cos存储 | Tencent | 1.0.1 |
| Base64内嵌存储 | Embed | 1.0.2 |![image-20220819190954717](docs/README.assets/image-20220819190954717.png)
## 二、教程
### 安装方式#### dotnet tool
具有 .NET Core/.NET6 SDK 环境可以直接使用命令安装:
```sh
dotnet tool install --global img-go
```
然后就可以直接使用它:
![image-20220820131923131](docs/README.assets/image-20220820131923131.png)#### 下载编译后的程序
下载地址:https://github.com/InCerryGit/img-go/releases
某度网盘(国内用户):https://pan.baidu.com/s/1mX8MEwx_xNnaxvGIHa0L8A?pwd=qzpk
如果您安装了.NET 6 Runtime那么可以下载不带运行时的版本,如下方标记的那个版本,它体积非常小:
![image-20220820131613052](docs/README.assets/image-20220820131613052.png)
如果没有安装.NET 6 Runtime,那么请下载对应平台版本,如win-x64、linux-x64等等:
![image-20220820131749686](docs/README.assets/image-20220820131749686.png)
### 使用方式
#### 配置由于图床的配置很多,所以需要一个小的配置文件帮助我们更容易的使用它。配置文件一般和程序放在同一个目录下,**默认叫`appconfigs.json`**,在没有指定配置文件的情况下,程序会**优先读取同目录的配置文件**,如果**不存在则读取用户目录文件**,用户目录文件在不同平台下都不一样。可以使用`img-go config -c user`命令创建默认的配置文件,**然后手工编辑它**。
![image-20220819204731511](docs/README.assets/image-20220819204731511.png)
下面是默认的配置文件的详解:
```json5
{
"AddWatermark": true, // 是否添加水印【默认参数,命令行可通过-w覆盖它】
"CompressionImage": true, // 是否压缩图片【默认参数,命令行可通过-cp覆盖它】
"DefaultBlobStore": "Local", // 对象存储仓库与BlobStores中配置一致,目前支持AliyunOss、Qiniu和Local本地存储【默认参数,命令行可通过-s覆盖它】
"DefaultOutputPath": ".\\output", // 默认输出路径 针对Markdown文件处理 和 图片Local存储有效【命令行可通过-o覆盖它】
"SkipFileWhenException": false, // 是否跳过处理异常的文件 true:跳过该文件,继续处理其它文件 false:抛出异常,终止处理 【命令行可通过-sf覆盖它】
// 存储仓库的配置
"BlobStores": {
// 本地存储 - 可做测试使用
"Local": {
"SubPath":".\\assets" // 相对于[DefaultOutputPath]的子目录,比如本配置最终就会存储到目录 .\output\assets\
},
// 七牛云
"Qiniu":{
"Zone":"z2", // 存储区域 https://developer.qiniu.com/kodo/1671/region-endpoint-fq
"UseHttps":false, // 是否使用https
"UseCdnDomains":false, // 是否使用CDN加速
"Bucket":"Bucket", // 你设置的Bucket
"AccessKey":"AccessKey", // 你的AccessKey
"SecretKey":"SecretKey", // 你的SecretKey
"AccessUrl":"" // 你的自定义的域名
}
// 下面可以配置其它图床
// 配置文件详情见下方
},
// 关于图片处理的配置
"ImageConfigs": {
"SkipNotSupportFormat": true, // 遇到不支持的图片类型是否跳过,否则就抛异常终止
"WatermarkText": "InCerry", // 水印文字
"WatermarkFontSize": 30, // 水印文字大小,如果图片小于文字大小,那么会缩放
"WatermarkFont": "Microsoft Yahei", // 使用的字体类型,默认使用微软雅黑,Mac和Linux用户可自行配置系统安装的字体
"WatermarkFontColor": "#FFF", // 字体颜色
"CompressionLevel": "Low", // 压缩级别,级别越高大小越小,质量就越低,级别从低到高为:Low Medium High
"ConvertFormatTo": "jpg" // 是否转换格式,支持一些常见的图片格式,如果不想转换,填null即可 如:"ConvertFormatTo": null
}
}
```
##### Base64内嵌图片Markdown格式支持使用Base64方式内嵌图片(大多数Markdown编辑器都支持),这有着不需要付费图床,并且容易分发等优点。缺点就是如果图片太大会造成Markdown文件非常大,可能会导致Markdown编辑器崩溃,不过总得来说支持它有好处。使用方式非常简单,只需要加上将默认存储配置为`Embed`或者在命令行使用时`-s Embed`即可。
##### 七牛云配置信息
Json配置项和说明:
```json5
// 七牛云
"Qiniu":{
"Zone":"z2", // 存储区域 完整的存储区域看这里 https://developer.qiniu.com/kodo/1671/region-endpoint-fq
"UseHttps":false, // 是否使用https
"UseCdnDomains":false, // 是否使用CDN加速
"Bucket":"Bucket", // 你设置的Bucket
"AccessKey":"AccessKey", // 你的AccessKey
"SecretKey":"SecretKey", // 你的SecretKey
"AccessUrl":"AccessUrl" // 你的自定义的域名,需要注意是http还是https访问
}
```对应的密钥信息需要到七牛自己的[控制台](https://portal.qiniu.com/user/key)里找到。其中需要注意的是,自己的存储空间的区域需要确定:
![image-20220820165725811](docs/README.assets/image-20220820165725811.png)
![image-20220820165826357](docs/README.assets/image-20220820165826357.png)
##### 阿里云Oss的配置信息
Json配置项和说明:
```json5
// 阿里云Oss图床
"AliyunOss": {
"Endpoint": "https://oss-cn-hangzhou.aliyuncs.com", // 阿里云Oss区域URL,我这里设置的是杭州区域
"AccessKey": "AccessKey", // 你的AccessKey
"AccessKeySecret": "AccessKeySecret", // 你的AccessKeySecret
"BucketName": "BucketName" // 你的BucketName
}
```在控制台中寻找配置项。
![image-20220819215531859](docs/README.assets/image-20220819215531859.png)
![image-20220819215740202](docs/README.assets/image-20220819215740202.png)
##### 腾讯云Cos配置信息
```json5
"Tencent":{
"Region":"ap-nanjing", // 所在区域简称,详情见 https://cloud.tencent.com/document/product/436/6224
"AppId":"AppId", // 你的AppId
"SecretId":"SceretId", // 你的SceretId
"SecretKey":"SecretKey", // 你的SecretKey
"Bucket":"Bucket" // 你的Bucket名称
}
```在控制台中寻找配置项,存储桶的信息:https://console.cloud.tencent.com/cos/bucket
![image-20220821102805855](docs/README.assets/image-20220821102805855.png)
SecretId相关的信息:https://console.cloud.tencent.com/cam/capi
![image-20220821102859792](docs/README.assets/image-20220821102859792.png)
#### 帮助信息
无论在什么情况下,`-h`命名就可以显示帮助信息,比如`img-go -h`:
![image-20220819191213009](docs/README.assets/image-20220819191213009.png)
#### 处理Markdown文件图片
如上图中的`Commands`节点提示一样,处理Markdown文件的命令是`img-go md 文件路径`,如果不会可以`-h`,会弹出各个参数的说明:
![image-20220819191550650](docs/README.assets/image-20220819191550650.png)
我们有一个叫`fs.md`的Markdown文件,可以使用它来处理。然后我需要添加水印和压缩图片大小,命令使用`img-go md ./fs.md -w -cp `:
![image-20220819192629773](docs/README.assets/image-20220819192629773.png)
![image-20220819192709332](docs/README.assets/image-20220819192709332.png)
然后可以看到创建了一个名为`fs-Local.md`文件,打开图片文件夹**格式转换为了jpg**、**大小也有下降**、另外如下图所示打上了水印:
![image-20220819192751465](docs/README.assets/image-20220819192751465.png)
#### 处理图片
如上面中提到的`Commands`节点提示一样,处理Markdown文件的命令是`img-go img 接文件或目录路径`,如果不会可以`-h`,会弹出各个参数的说明,基本和处理markdown文件一样:
![image-20220819193115109](docs/README.assets/image-20220819193115109.png)
#### 处理单个图片
我们有一个`demo.png`文件,由于上面的配置文件已经配置了**压缩**和**水印**,所以我们可使用`img-go img ./fs.assets/demo.png`来处理单个图片。
![image-20220819193631427](docs/README.assets/image-20220819193631427.png)
![image-20220819193733002](docs/README.assets/image-20220819193733002.png)
#### 处理图片目录
我们有`fs.assets`图片文件夹,我们想把它压缩和水印处理后上传到阿里云中,由于上面的配置文件已经配置了**压缩**和**水印**,所以我们只需要加`-s AliyunOss`指定上传阿里云即可。最终命令`img-go img ./fs.assets -s AliyunOss`来处理这个文件夹。
注意:**它会尝试给文件夹内的所有文件进行压缩和水印操作,失败则跳过,但是同样会上传**。比如下面的**`*.svg`文件并不支持处理**,但是还是会上传到阿里云中。
![image-20220819194143711](docs/README.assets/image-20220819194143711.png)
![image-20220819194532567](docs/README.assets/image-20220819194532567.png)
来查看一下阿里云Oss后台:
![image-20220819194412861](docs/README.assets/image-20220819194412861.png)
![image-20220819194615049](docs/README.assets/image-20220819194615049.png)
## 三、其他说明
- 程序未加过多的容错机制,请勿暴力测试。
- 上传图片具有重试机制,重试三次。
- 只有本地路径的图片才会上传,所有http/https远程图片都会过滤。
- 暂不支持博客园上传,如果需要博客园那么可以使用这个工具 https://github.com/stulzq/dotnet-cnblogs-tool