当前位置: 首页 > 编程日记 > 正文

怎样去掉 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 做图床,插入图片有水印问题的全过程。

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

相关文章:

Python编程比较好的机构怎么选择

想要进入到IT行业&#xff0c;很多人的首要选择都是学习Python编程语言&#xff0c;因为Python编程语言入门是相对比较简单的&#xff0c;但是想要学好Python技术&#xff0c;找一个好的Python培训机构是非常重要的&#xff0c;那么Python编程比较好的机构怎么选择呢?来看看下…

赚钱是刚需,如何正确的交易股票?

试着考虑下面这些情景&#xff1a; 听隔壁老王说&#xff0c;最近股市行情不错&#xff0c;自己也想买点股票&#xff0c;但不知道该买那支&#xff1f;犹犹豫豫到处打听消息。 买入一支股票后&#xff0c;时不时就会拿出手机看看它的价格&#xff0c;有时候甚至一天要看很多…

C# Windows CE使用小技巧实例

C# Windows CE使用的一些感受&#xff1a;使用Windows的开发机上用C#启动一个外部程序的方法有很多&#xff0c;但这些方法用在使用WinCE的目标工控机上都无能为力。 C# Windows CE使用1、 现在以打开一个IE为例&#xff0c;介绍如何在WinCE下使用C#来打开一个外部文件&#xf…

Ovirt 安装部署方法

官方的安装文档&#xff1a;http://www.ovirt.org/documentation/install-guide/Installation_GuideOvirt note 系统镜像的下载&#xff1a;http://www.ovirt.org/download http://mirror.isoc.org.il/pub/ovirt/ovirt-4.1/iso/ovirt-node-ng-installer-ovirt/4.1-2017072816/…

零基础如何选择适合的Java培训课程

很多人都想要学习java技术&#xff0c;但是害怕自己是零基础学不好&#xff0c;所以想要找专业的java培训机构进行学习&#xff0c;但是零基础如何选择适合的Java培训课程成了他们比较头疼的事情&#xff0c;下面小编就为大家做下详细的介绍。 ​  零基础如何选择适合的Java培…

Android Intent的几种用法全面总结

Android Intent的几种用法全面总结 Intent, 用法Intent应该算是Android中特有的东西。你可以在Intent中指定程序要执行的动作&#xff08;比如&#xff1a;view,edit,dial&#xff09;&#xff0c;以及程序执行到该动作时所需要的资料。都指定好后&#xff0c;只要调用startAct…

七天学会「股票数据分析软件」的开发(中)

两天前&#xff0c;我写了 七天学会「股票数据分析软件」的开发&#xff08;上&#xff09;&#xff0c;号召大家尝试着写写代码&#xff0c;不知道大家进度如何。 如果存在掌握一种技能的刚需&#xff0c;而且知道正确的学习方法&#xff0c;经过刻意练习&#xff0c;这门技能…

《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一1.1 生成执行计划

1.1 生成执行计划 在Oracle中&#xff0c;任何一条语句在解析过程中都会生成一个唯一的数值标识&#xff0c;即SQL_ID。而同一条语句&#xff0c;在解析过程中&#xff0c;可能会因为执行环境的改变&#xff08;例如某些优化参数被改变&#xff09;而生成多个版本的游标&#…

软件测试培训:高薪测试技术要掌握哪些

职业技能一 1. 软件测试&#xff1a; 1) 熟练灵活地运用等价类、边界值、判定表法、因果图法等各种方法设计测试用例&#xff0c;包括单元测试、集成测试、系统测试用例设计。 2) 牢固掌握了软件测试计划、测试日报、测试报告的写作方法与要领。 3) 针对B/S、C/S架构及不同…

MFC-4简单的窗口重绘(非部分重绘)

#include <afxwin.h> #include "resource.h" #include <afxtempl.h> //定义模板类的头文件class MyDocument : public CDocument { public:CArray<CPoint,CPoint &> pArray;//<保存的数据类型,读取保存数据类型的返回值>void AddPoint…

七天学会「股票数据分析软件」的开发(下)

昨天下午把《我不是药神》这部电影看了&#xff0c;搞得我哭的稀里哗啦&#xff0c;里面有一些情节触痛了内心中最薄弱的地方。药厂没有错&#xff0c;他们要收回前期投入的研发成本。主人公 程勇 只能算是整个事件的牺牲品&#xff0c;通过他的牺牲让国家关注到白血病人这个群…

那些对混合云开发和应用程序环境的错误认识

企业架构师们在开发混合云计算应用程序并为支持程序云计算而选择云计算供应商之前&#xff0c;他们应当好好完成他们的准备工作。选择错误的供应商和在错误的环境中开发应用程序都会对应用程序的运行性能、工作流程、变更成本、以及与客户的沟通和交易带来负面影响。 在本文中&…

2021年UI设计培训机构哪个好

想要学好UI设计&#xff0c;选择报一个专业的UI设计培训机构是非常明智的选择&#xff0c;为什么这么说呢?因为培训机构的课程都是根据当下的行业环境制作出来的&#xff0c;而且有专业老师&#xff0c;比自学要好很多&#xff0c;那么在2021年UI设计培训机构哪个好呢?来看看…

UVA 116 Unidirectional TSP DP

题目链接&#xff1a; https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&category3&pageshow_problem&problem52 题目描述&#xff1a; 一个整数矩阵&#xff0c; 求第一列到最后一列的最小整数和&#xff0c; 只能从第一列出发向右&…

C++ 数据类型转换

wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString....#include <string>// 使用CString必须使用MFC&#xff0c;并且不可包含<windows.h>#define _AFXDLL#include <afx.h>using namespace std;//-----------------------…

如何准备数学建模竞赛!

昨天早晨&#xff0c;我到教十一实验室的时候遇到史会峰老师&#xff0c;他说正准备给学生们进行数学建模的培训。今天早晨&#xff0c;我又遇到了孔令才老师&#xff0c;他同样也说准备给学生们进行数学建模的培训。看到这么多同事在做这个事情&#xff0c;想想自己也应该贡献…

UI设计培训:UI设计师离不开的基本版式设计

不管你是UI设计&#xff0c;还是工业设计&#xff0c;甚至动画设计&#xff0c;终究离不开基本的版式设计&#xff0c;所以版式设计这块非常考验设计师的基础功力。 1. 大且醒目&美观的排版设计 版面设计大概是一位设计师重要的部分&#xff0c;今年的版面设计会围绕着大且…

我对她说,你能不能换件衣服?换种心情?换种脾气?她说,可以,换个人就行了···...

我跟她说&#xff0c;你能不能换件衣服?换种心情?换种脾气?她说&#xff0c;可以&#xff0c;换个人就行了转载于:https://www.cnblogs.com/yangzhong/archive/2010/07/06/1772124.html

如何通过代码连接SQL Server数据库

我们曾经为南方电网做过几个有关架空线路的科技项目&#xff0c;要趁着假期有整段的空闲时间&#xff0c;把这些代码整理一下&#xff0c;放入团队刚刚重构的代码库中。 由于这些项目使用的数据库为 SQL Server&#xff0c;所以在整理代码之前需要解决两个问题&#xff1a; 把…

选择一个稳定、快速的服务器四大注意事项

要想运营好一个网站&#xff0c;稳定和高速的服务器是必不可少的。可是在选择的时候企业就会很发愁&#xff0c;不知道该考虑哪些因素&#xff0c;不知道该怎么选择&#xff0c;下面我们简单的了解一下如何选择一个稳定性好、快速的服务器。 第一 性能要稳定 为了保证网站能够正…

APP不同上线情况对应的测试流程

一个App软件从研发提测到版本上线都会经过哪些测试流程呢?很多人认为就是进行功能测试&#xff0c;没bug了就提交审核&#xff0c;审核通过就直接上线了&#xff0c;其实不然&#xff0c;有些步骤是需要特别关注的&#xff0c;否则极易造成线上bug&#xff0c;本文千锋教育小编…

iOS 进阶—— iOS内存管理

1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么?autoreleasepool 是怎样实现的?__unsafe_unretained 是什么?Block 是怎样实现的什么时候会引起循环引用&#xff0c;什么时候不会引起循环引用?所以我将在本篇博文中详细的从 ARC 解释到…

Google工作原理

今天在晚上看到一个图&#xff0c;讲解google的工作原理&#xff0c;感觉写的不错。贴过来方便以后深入的研究。 转载于:https://www.cnblogs.com/muyuge/archive/2010/07/06/6152590.html

如何利用ArcGis修改shp数据字段名称

最近在处理一批地理信息数据&#xff0c;其中涉及到对shp文件属性字段的修改&#xff0c;在这里做个记录&#xff0c;以防大家再走弯路。 工具&#xff1a; Arcgis软件shp文件 第1步&#xff1a;打开ArcCatalog&#xff0c;选择左上角的链接文件夹&#xff0c;选择你存放数据…

学java为什么要报java培训班?

学java为什么要报java培训班?对于没有基础的小白来说&#xff0c;选择报java培训班是最合适不过的&#xff0c;自学是没有任何规划的&#xff0c;学到的技术都是模棱两可&#xff0c;工作入职后是存在很大风险的&#xff0c;具体的来看看下面的详细介绍吧。 学java为什么要报j…

Tensorflow 全网最全学习资料汇总之框架平台的综合对比【3】

作为机器学习领域、尤其是 Python 生态圈最受欢迎的框架平台&#xff0c;TensorFlow 具有许多吸引开发者的优点。其中最显而易见的是谷歌的技术支持和完善的社区&#xff08;庞大用户群&#xff09;。这些都为 TensorFlow 的普及打下了基础。但是&#xff0c;开发者需要了解 Te…

空间两点间的距离

空间两点间的距离公式推导&#xff0c;有图有真相 转载于:https://www.cnblogs.com/graphics/archive/2010/07/08/1773966.html

如何利用ArcGis把经纬度转成shp数据

这段时间在处理一批地理信息数据&#xff0c;由于部分数据是经纬度坐标&#xff0c;如下图所示&#xff1a; 这样&#xff0c;面对的第一个问题&#xff0c;就是把这批数据转换成shp格式。下面做一个记录&#xff0c;与大家分享。 工具&#xff1a; ArcGIS 软件 Step1&#x…

新手参加java培训都学什么

互联网的强大使得很多IT技术变得越来越吃香&#xff0c;java技术就是其中的一种&#xff0c;很多人都开始学习java技术&#xff0c;下面小编就为大家分享一些新手参加java培训都学什么?希望能够给零基础的学员带来一些帮助。 新手参加java培训都学什么? 1、对于新手学习java的…

第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

第三百三十八节&#xff0c;Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的&#xff0c;以深度为准则从左到右的执行&#xff08;递归方式实现&#xff09;Scrapy默认是深度优先的 广度优先 是以层级来执行的…