怎样去掉 CSDN-Markdown 上传图片中的水印

自己一直使用 Markdown 写技术图文,我们知道在 Markdown 中插入图片需要这个图片的URL地址,那么必须得找一个图床来存放图片。

// Markdown 中插入图片的语法结构

![这里写图片描述](这里写图片的URL地址)

我的方法是这样的:在 CSDN 上发一篇特定的 Blog 来做图床。可是 CSDN-Markdown 上传的图片被自动添加了水印,更坑的是 CSDN-Markdown 编辑器中没有选择水印添加与否的选项。

被自动添加水印的图片

以前,感觉能用就好,这点小瑕疵无所谓。

昨晚,在写网格交易策略的时候,不知道哪个神经元被激活,把自己吓尿了!

自己显然成为了哪个自己都讨厌的人 —- 怕麻烦,不深入思考,不去解决问题,马虎了事。

呜呜~


不管怎样,今天必须把这个问题解决掉。

考虑到 CSDN-Markdown 插入图片也是通过自动生成图片URL的形式实现的,所以先看 CSDN-Markdown 为该图片自动添加的代码:

![这里写图片描述](https://img-blog.csdn.net/20180701101220188?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xTR09fTVlQ/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

HTTP Get 请求的 URL 通常是这样的:https://img-blog.csdn.net/20180701101220188?...?后面是传递的数据,通常以{key,value}键值对的形式出现。索性,先访问 https://img-blog.csdn.net/20180701101220188 这个地址试试看,结果如下,水印去掉了。

水印去掉后的图片

是不是要哭死。所以呀,看起来麻烦,不愿思考,不愿去解决的问题。其实,很多问题就是一个纸老虎。


剩下的事情,就是把这些{key,value}键值对搞清楚,这个问题就圆满了。

  • key:watermark
  • value:2

尝试修改value等于1,2,3,4,5结果只有2和3能够解析。估计这是 CSDN-Markdown 内部的一个标识吧,可以忽略。

  • key:text
  • value:aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xTR09fTVlQ

这个value是Base64加密后的,解密之后为 “https://blog.csdn.net/LSGO_MYP”,我的 CSDN Blog 地址。

  • key:font
  • value:5a6L5L2T

这个value也是Base64加密后的,解密之后为“宋体”。

  • key:fontsize
  • value:400

这个value对应水印的字体大小,改成500字体变大,改成200字体变小。

  • key:fill
  • value:I0JBQkFCMA==

这个value也是Base64加密后的,解密之后为 “#BABAB0”,表示字体的颜色,对应 “RGB(186,186,176)”

  • key:dissolve
  • value:70

这个value对应透明度,改成100趋于不透明,改成10趋于透明

最后的工作就是编写Base64的加密,解密算法来验证一下。

/// <summary>
/// Base64加密
/// </summary>
/// <param name="encode">加密采用的编码方式</param>
/// <param name="source">待加密的明文</param>
/// <returns>加密后的字符串</returns>
static string EncodeBase64(Encoding encode, string source)
{
    string enString;
    byte[] bytes = encode.GetBytes(source);
    try
    {
        enString = Convert.ToBase64String(bytes);
    }
    catch
    {
        enString = source;
    }
    return enString;
}

/// <summary>
/// Base64加密,采用utf8编码方式加密
/// </summary>
/// <param name="source">待加密的明文</param>
/// <returns>加密后的字符串</returns>
static void EncodeBase64(string source)
{
    string result = EncodeBase64(Encoding.UTF8, source);
    Console.WriteLine("source:{0}\nvalue:{1}", source, result);
}

/// <summary>
/// Base64解密
/// </summary>
/// <param name="encode">解密采用的编码方式,注意和加密时采用的方式一致。</param>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
public static string DecodeBase64(Encoding encode, string result)
{
    string decode;
    byte[] bytes = Convert.FromBase64String(result);
    try
    {
        decode = encode.GetString(bytes);
    }
    catch
    {
        decode = result;
    }
    return decode;
}

/// <summary>
/// Base64解密,采用utf8编码方式解密
/// </summary>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
static void DecodeBase64(string result)
{
    string source = DecodeBase64(Encoding.UTF8, result);
    Console.WriteLine("result:{0}\nsource:{1}", result, source);
}

运行结果如下:

image


以上就是我解决 Markdown 插入图片时,利用 CSDN Blog 做图床,插入图片有水印问题的全过程。

解决问题的方法不重要,做事情的观念才重要,遇到问题要想办法解决它,而不是嫌麻烦,凑乎了事。多么痛的领悟 ~~

猜你喜欢

转载自blog.csdn.net/lsgo_myp/article/details/80874437
今日推荐