1 Star 6 Fork 1

InCerry / img-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

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
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

Markdown图片辅助工具,它能非常简单的将Markdown文件中的图片提取、加水印、压缩并上传到指定的图床。 展开 收起
C#
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/InCerryGit/img-go.git
git@gitee.com:InCerryGit/img-go.git
InCerryGit
img-go
img-go
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891