Skip to content

Markdown图片辅助工具,它能非常简单的将Markdown文件中的图片提取、加水印、压缩并上传到指定的图床。

License

Notifications You must be signed in to change notification settings

zibuyu2015831/img-go

 
 

Repository files navigation

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

二、教程

安装方式

dotnet tool

具有 .NET Core/.NET6 SDK 环境可以直接使用命令安装:

dotnet tool install --global img-go

然后就可以直接使用它: image-20220820131923131

下载编译后的程序

下载地址:https://github.com/InCerryGit/img-go/releases

某度网盘(国内用户):https://pan.baidu.com/s/1mX8MEwx_xNnaxvGIHa0L8A?pwd=qzpk

如果您安装了.NET 6 Runtime那么可以下载不带运行时的版本,如下方标记的那个版本,它体积非常小:

image-20220820131613052

如果没有安装.NET 6 Runtime,那么请下载对应平台版本,如win-x64、linux-x64等等:

image-20220820131749686

使用方式

配置

由于图床的配置很多,所以需要一个小的配置文件帮助我们更容易的使用它。配置文件一般和程序放在同一个目录下,默认叫appconfigs.json,在没有指定配置文件的情况下,程序会优先读取同目录的配置文件,如果不存在则读取用户目录文件,用户目录文件在不同平台下都不一样。可以使用img-go config -c user命令创建默认的配置文件,然后手工编辑它

image-20220819204731511

下面是默认的配置文件的详解:

{
  "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配置项和说明:

// 七牛云
"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访问
}

对应的密钥信息需要到七牛自己的控制台里找到。其中需要注意的是,自己的存储空间的区域需要确定:

image-20220820165725811

image-20220820165826357

阿里云Oss的配置信息

Json配置项和说明:

// 阿里云Oss图床
"AliyunOss": {
  "Endpoint": "https://oss-cn-hangzhou.aliyuncs.com",   // 阿里云Oss区域URL,我这里设置的是杭州区域
  "AccessKey": "AccessKey",                             // 你的AccessKey
  "AccessKeySecret": "AccessKeySecret",                 // 你的AccessKeySecret
  "BucketName": "BucketName"                            // 你的BucketName
}

在控制台中寻找配置项。

image-20220819215531859

image-20220819215740202

腾讯云Cos配置信息
"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

SecretId相关的信息:https://console.cloud.tencent.com/cam/capi

image-20220821102859792

帮助信息

无论在什么情况下,-h命名就可以显示帮助信息,比如img-go -h

image-20220819191213009

处理Markdown文件图片

如上图中的Commands节点提示一样,处理Markdown文件的命令是img-go md 文件路径,如果不会可以-h,会弹出各个参数的说明:

image-20220819191550650

我们有一个叫fs.md的Markdown文件,可以使用它来处理。然后我需要添加水印和压缩图片大小,命令使用img-go md ./fs.md -w -cp

image-20220819192629773

image-20220819192709332

然后可以看到创建了一个名为fs-Local.md文件,打开图片文件夹格式转换为了jpg大小也有下降、另外如下图所示打上了水印:

image-20220819192751465

处理图片

如上面中提到的Commands节点提示一样,处理Markdown文件的命令是img-go img 接文件或目录路径,如果不会可以-h,会弹出各个参数的说明,基本和处理markdown文件一样:

image-20220819193115109

处理单个图片

我们有一个demo.png文件,由于上面的配置文件已经配置了压缩水印,所以我们可使用img-go img ./fs.assets/demo.png来处理单个图片。

image-20220819193631427

image-20220819193733002

处理图片目录

我们有fs.assets图片文件夹,我们想把它压缩和水印处理后上传到阿里云中,由于上面的配置文件已经配置了压缩水印,所以我们只需要加-s AliyunOss指定上传阿里云即可。最终命令img-go img ./fs.assets -s AliyunOss来处理这个文件夹。

注意:它会尝试给文件夹内的所有文件进行压缩和水印操作,失败则跳过,但是同样会上传。比如下面的***.svg文件并不支持处理**,但是还是会上传到阿里云中。

image-20220819194143711

image-20220819194532567

来查看一下阿里云Oss后台:

image-20220819194412861

image-20220819194615049

三、其他说明

  • 程序未加过多的容错机制,请勿暴力测试。
  • 上传图片具有重试机制,重试三次。
  • 只有本地路径的图片才会上传,所有http/https远程图片都会过滤。
  • 暂不支持博客园上传,如果需要博客园那么可以使用这个工具 https://github.com/stulzq/dotnet-cnblogs-tool

About

Markdown图片辅助工具,它能非常简单的将Markdown文件中的图片提取、加水印、压缩并上传到指定的图床。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%