Typora 自定义命令自动上传图片-windows版

背景:

typora是一个可以使用markdown的编辑器,即写即展示还是很舒服的。但是1.0版本之后是需要付费的,如果想继续使用,可以购买正版也可以自行百度破解版。
markdown的图片展示最好能结合图床,因为markdown的优势就是可以文图分离储存,但是如果在本地电脑,不需要图床这么复杂的系统,只想通过域名访问图片,则可以在本地安装nginx,通过访问本地来展示图片。
在本地电脑中启动一个nginx的好处:

  • 可以将图片和文章分离,即图片单独放在一个文件夹中,文章可以放在其他的位置。
  • 方便迁移,不存在绝对路径迁移后无法显示的情况。
  • 不需要公网的图床服务,省去会员费用。
  • 本地存储的图片,可随时编辑。
  • 相对于图床系统,省去数据库和存储等中间组件,轻便耐用。

本次分享windows版本的的搭建方法。

需要组件:

  • typora-windows
  • nginx-windows
  • 文件夹及路径 (C:\Users\cnxhs\Desktop\dn\images\)

编写脚本(上传到本地文件夹)

typora就是执行你写好的脚本,并且传几个参数进去(参数数量不是固定的),参数就是图片地址,像这样

powershell C:\Users\cnxhs\Desktop\t.ps1 "C:\\Users\\cnxhs\\AppData\\Local\\Temp/typora-icon2.png" "C:\\Users\\cnxhs\\AppData\\Local\\Temp/typora-icon.png"

我们需要对传进来的参数进行处理,可以通过接口上传图片,也可以通过拷贝的方式复制到文件夹中。
windows中,我是用的是powershell脚本,powershell是Windows自带的语言,不需要额外安装。
首先,打开一个notepad,将下边的代码放进去,并保存成 .ps1结尾的文件。我就保存在了桌面上。

说几句:
1、这个脚本对本地和网络上的图片都会进行处理,分两种情况,如果是http开头的,会下载到指定文件夹,并返回指定的url,如果不是http开头的,则会复制图片到指定文件夹,并返回url。
2、windows版本的typora和mac版本的不一样,mac版本的typora在处理网络图片的时候会先下载到本地,传进来的参数是一个本机的句对路径,文件名也是png结尾的,但是windows的则是直接给你一个url,我遇到过几次下下来文件名不全的情况,所以对文件名做了一个重命名的操作,防止下来没法用,上半段就是在取名。
3、输出结果需要以Upload Success:开头,否则失败。
4、你需要修改的就只有 p a t h 和 path和 pathlog_file两个参数,还有最后一行输出的url格式。
5、powershell的打开方式是把鼠标放到开始按钮上(屏幕左下角),右键,点击Windows Powershell

# 有可能windows没法执行powershell,需要执行下边的命令打开权限。
# Set-ExecutionPolicy Unrestricted
# 然后输入A
$path='C:\Users\cnxhs\Desktop\dn\images\'  #图片存储的文件夹路径
$log_file='.\log.txt' #日志的位置和名字
echo "Upload Success:"
for($i=0;$i-lt$args.Count; $i++)
{
	$($args[$i]) | Out-File -Append -FilePath $log_file # 传入的参数输出到日志
	$f_change=1 # 防止由于取名次数过多导致卡死,设置了10次取名机会
	while(1 -lt 2)
	{
		if($f_change -lt 10)
		{ $f_change++}
		else
		{echo '10 times ,over now'
		exit}
		# 选择一个文件名
		[string]$names_tmp=Get-ChildItem $path -Name  #获取文件夹内的文件名字
		if($names_tmp.Count -eq 0){}
		else{$names=$names_tmp.split(" ")}
		[string]$random_name=Get-Random # 为了防止网上的图片没有后缀名字,所以给一个随机数作为名字
		$file_name=${random_name}+'.png'  # 组成文件名
		#$file_name='1053425145.png' 
		$f_same='False' # 名字是否有重名的标志
		for($o=0;$o-lt$names.Count;$o++)
		{
			if ($file_name -eq $names[$o])
			{
				$f_same='True'
				$output='same name: '+$file_name
				Write-Host $output
				$output | Out-File -Append -FilePath $log_file
				break
			}
		}
		if ($f_same -eq 'False')
		{
			break
		}
	}

	# 如果以http开头的参数,就下载,否则就拷贝
	  if ($($args[$i]).StartsWith('http')){
		cd $path
		wget $($args[$i]) -OutFile $file_name
		cd ..
	  }
	  else{
		copy $($args[$i])  $path$file_name
	  }
	  Write-Host http://127.0.0.1/images/$file_name
}

最后保存之后的t.ps1长这样。

配置typora

路径:文件->偏好设置->图像
操作:如图
命令:powershell C:\Users\cnxhs\Desktop\t.ps1
测试:点击 验证图片上传选项

点击 验证图片上传选项,出现成功上传图片并获得新的URL则为成功。如果没成功可能是存储图片的文件夹不存在,或者你输出的url格式不对。这之后去文件夹中看看,应该有两个图片了。

nginx安装

下载nginx,nginx也有Windows版本的,别下错了,我下的nginx-1.18.0。
官网:nginx: download
操作:
1、将下载好的压缩包解压缩到本地,Nginx目录所在的路径中不要有中文字符,也不建议有空格。
2、启动Nginx
使用CMD命令start命令启动nginx

c: && cd c:\tools\nginx
start nginx

此时你在浏览器输入 127.0.0.1,可以得到nginx的相应。

nginx配置

这是最关键一步,能不能展示,全看ningx配置了。
进入nginx文件夹,找到conf文件夹,进去,在nginx.conf文件上右键,使用notepad打开。加入下边这段配置(虚线李里边的)。

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
#----------------从这开始,复制----------------------------
		location /images/ {
		    root  C:/Users/cnxhs/Desktop/dn;
			autoindex on;
			autoindex_exact_size off;
			autoindex_localtime on;
			charset utf-8,gbk;
		}
#----------------到这结束,复制到location / {下边来---------
        #error_page  404              /404.html;

重启nginx服务

nginx.exe -s reload

测试

至此,你往typora里边拉一个图片或者从网上直接copy一段带图片的文章到typora中,图片应该都直接存入指定文件夹中了,并且能展示出来。如果不能显示,那大概是你自作主张,改变了上边的配置,比如输出的url不是http开头的(也就是验证没通过),再或者你的nginx配置路径不对,图片存在了dn文件夹中,而不是dn的images文件夹中。再或者nginx没启动成功,反正任何一个错误都会导致看不到图片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值