[{"data":1,"prerenderedAt":1375},["ShallowReactive",2],{"page-/post/cli/sharp-picgo-cli-tool":3,"surrounding-page":1366},{"id":4,"title":5,"author":6,"body":7,"date":1351,"description":1352,"extension":1353,"group":1354,"lastmod":1355,"meta":1356,"navigation":581,"path":1359,"rawbody":1360,"seo":1361,"showTitle":5,"stem":1362,"tags":1363,"versions":1354,"__hash__":1365},"content/post/CLI/sharp-picgo-cli-tool.md","🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具","zzdaddy",{"type":8,"value":9,"toc":1340},"minimark",[10,14,18,21,24,27,159,162,169,172,202,205,213,216,222,225,231,235,238,244,247,252,258,262,269,279,282,304,307,360,366,369,371,377,380,385,388,393,397,400,405,411,416,421,427,432,437,443,448,453,458,464,469,473,476,482,487,494,499,508,513,527,539,545,548,553,556,561,564,569,572,1274,1277,1282,1287,1290,1295,1310,1313,1316,1319,1333,1336],[11,12,13],"h2",{"id":13},"引言",[15,16,17],"p",{},"大家好啊， 我是枣把儿！",[15,19,20],{},"最近写作比较多，而要发平台又好几个，插入图片的时候就很不方便。一开始我是白嫖掘金的图片地址，但是每个平台都会自动打个水印上去...",[15,22,23],{},"于是我又把之前写的命令行工具拿出来翻新了一些，加入了Sharp图片压缩、Picgo上传图床、markdown文件内容替换这三大内容，极大的改善了我的发文体验，并且感觉在日常中也比较实用。和大家分享一下~",[11,25,26],{"id":26},"功能一览",[28,29,30,52,133,153],"ol",{},[31,32,33,34,38],"li",{},"国际化文件翻译 - ",[35,36,37],"strong",{},"translate",[28,39,40,43,46,49],{},[31,41,42],{},"目前用于公司内部批量翻译国际化文件, 所以需要遵循一定的规则",[31,44,45],{},"基于百度翻译, 需要自定义自己的appId和key",[31,47,48],{},"支持指定单个文件翻译",[31,50,51],{},"支持指定文件夹, 批量翻译所有文件",[31,53,54,55,58],{},"压缩文件 - ",[35,56,57],{},"tiny",[28,59,60,71,74,77,80,83,86,120],{},[31,61,62,63,70],{},"基于",[64,65,69],"a",{"href":66,"rel":67},"https://sharp.pixelplumbing.com/install#custom-libvips",[68],"nofollow","sharp",", sharp支持的文件都可以压缩",[31,72,73],{},"输出目录: 所有参数下, 压缩后文件都会输出到同级目录中",[31,75,76],{},"输出时显示大小及压缩比例\n如: ✔ 190.4 KB => 115.2 KB (↓39.52%)【 demo1-zz-tiny-1702631665830.gif 】",[31,78,79],{},"支持自定义名称输出 --name=xxx.png",[31,81,82],{},"支持自定义压缩质量 --quality=70 (1-100)",[31,84,85],{},"支持单个文件压缩 --file=xxx.png",[31,87,88,89],{},"支持批量文件压缩\n",[90,91,92,103,117],"ul",{},[31,93,94,95],{},"指定文件夹 --dir=./demo (基于当前命令运行的目录)\n",[90,96,97,100],{},[31,98,99],{},"支持相对路径",[31,101,102],{},"支持绝对路径",[31,104,105,106],{},"指定文件名 --condition=abc\n",[90,107,108,111,114],{},[31,109,110],{},"模糊匹配 所有包含abc且支持的文件类型都会被压缩",[31,112,113],{},"如果没有指定--dir , 则--condition会在当前目录下查找",[31,115,116],{},"模糊匹配到的内容, 会标红处理",[31,118,119],{},"若批量压缩时, 指定了name(第四条), 则自定义名称后会自动拼接一个序号, 避免覆盖",[31,121,122,125],{},[35,123,124],{},"支持和picgo联动, 压缩完后直接上传到图床",[28,126,127,130],{},[31,128,129],{},"需要先安装picgo, 启动, 并配置好图床配置",[31,131,132],{},"限制文件大小, 超过 max 的文件不会被上传",[31,134,135,136,139],{},"通过 Picgo 上传到图床 - ",[35,137,138],{},"picgo",[28,140,141,144,147,150],{},[31,142,143],{},"支持指定文件 -f 上传",[31,145,146],{},"支持指定文件夹 -d 批量上传全部",[31,148,149],{},"支持限制大小 -m 默认只上传60kb以内的图片",[31,151,152],{},"支持模糊匹配 -co 文件名中含有co的图片, 且满足大小限制, 都会被上传",[31,154,155,156],{},"究极联动： ",[35,157,158],{},"tiny压缩 -> 自动传给picgo -> 自动把obsidian里的本地图片链接替换为上传后的url",[11,160,161],{"id":161},"安装",[15,163,164,165,168],{},"先安装",[64,166,69],{"href":66,"rel":167},[68],"的两个前置依赖包。@img/sharp-darwin-arm64@0.33.0 、 @img/sharp-win32-x64@0.33.0",[15,170,171],{},"我的系统是macos M2，所以需要安装@img/sharp-darwin-arm64",[173,174,179],"pre",{"className":175,"code":176,"language":177,"meta":178,"style":178},"language-shell shiki shiki-themes github-light","npm i -g @img/sharp-darwin-arm64@0.33.0\n","shell","",[180,181,182],"code",{"__ignoreMap":178},[183,184,187,191,195,199],"span",{"class":185,"line":186},"line",1,[183,188,190],{"class":189},"s7eDp","npm",[183,192,194],{"class":193},"sYBdl"," i",[183,196,198],{"class":197},"sYu0t"," -g",[183,200,201],{"class":193}," @img/sharp-darwin-arm64@0.33.0\n",[15,203,204],{},"windows10/11 (win32-x64)用户请安装  @img/sharp-win32-x64@0.33.0",[173,206,211],{"className":207,"code":209,"language":210},[208],"language-text"," npm i -g @img/sharp-win32-x64@0.33.0\n","text",[180,212,209],{"__ignoreMap":178},[15,214,215],{},"然后安装工具本体",[173,217,220],{"className":218,"code":219,"language":210},[208],"npm i -g zzoffduty-cli@latest\n",[180,221,219],{"__ignoreMap":178},[15,223,224],{},"运行 -h 看看是否成功",[173,226,229],{"className":227,"code":228,"language":210},[208],"zz -h\n",[180,230,228],{"__ignoreMap":178},[11,232,234],{"id":233},"tiny命令-实现压缩","tiny命令 实现压缩",[15,236,237],{},"使用help命令查看所有支持的功能",[173,239,242],{"className":240,"code":241,"language":210},[208],"zz tiny --help\n\n  -f, --file \u003Cfile>             要压缩的图片文件 (default: null)\n  -d, --dir \u003Cdir>               压缩文件夹内所有文件 (default: null)\n  -co, --condition \u003Ccondition>  压缩文件夹内所有名称包含[--condition]的图片文件 (default: null)\n  -q, --quality \u003Cquality>       压缩质量(1-100) (default: 75)\n  -c, --colours \u003Ccolours>       GIF色彩保留(2-256) (default: 128)\n  -n, --name \u003Cname>             指定文件名输出 (default: \"\")\n  -m, --max \u003Cmax>               限制要上传的文件大小(kb)(仅当开启 --picgo 时会用到) (default: 50)\n  --picgo [type]                调用picgo (无参数) (default: null)\n  --no-picgo [type]             不调用picgo (无参数) (default: null)\n  -h, --help                    display help for command\n",[180,243,241],{"__ignoreMap":178},[15,245,246],{},"压缩功能演示：",[90,248,249],{},[31,250,251],{},"指定目录压缩，并指定名称输出",[15,253,254],{},[255,256],"img",{"alt":178,"src":257},"https://img.zzao.club/article/202411191442697.png",[11,259,261],{"id":260},"picgo命令-实现上传图床","picgo命令 实现上传图床",[15,263,264,265,268],{},"PicGo在",[180,266,267],{},"2.2.0","版本开始内置了一个小型的服务器，用于接收来自其他应用的HTTP请求来上传图片。",[15,270,271,272,275,276],{},"默认监听地址： ",[180,273,274],{},"127.0.0.1","，默认监听端口：",[180,277,278],{},"36677",[15,280,281],{},"以POST请求去上传",[90,283,284,290,297],{},[31,285,286,287],{},"method: ",[180,288,289],{},"POST",[31,291,292,293,296],{},"url: ",[180,294,295],{},"http://127.0.0.1:36677/upload"," （此处以默认配置为例）",[31,298,299,300,303],{},"request body: ",[180,301,302],{},"{list: ['xxx.jpg']}"," 必须是JSON格式",[15,305,306],{},"返回的数据：",[173,308,312],{"className":309,"code":310,"language":311,"meta":178,"style":178},"language-typescript shiki shiki-themes github-light","{\n  \"success\": true, // or false\n  \"result\": [\"url\"]\n}\n","typescript",[180,313,314,320,339,354],{"__ignoreMap":178},[183,315,316],{"class":185,"line":186},[183,317,319],{"class":318},"sgsFI","{\n",[183,321,323,326,329,332,335],{"class":185,"line":322},2,[183,324,325],{"class":193},"  \"success\"",[183,327,328],{"class":318},": ",[183,330,331],{"class":197},"true",[183,333,334],{"class":318},", ",[183,336,338],{"class":337},"sAwPA","// or false\n",[183,340,342,345,348,351],{"class":185,"line":341},3,[183,343,344],{"class":193},"  \"result\"",[183,346,347],{"class":318},": [",[183,349,350],{"class":193},"\"url\"",[183,352,353],{"class":318},"]\n",[183,355,357],{"class":185,"line":356},4,[183,358,359],{"class":318},"}\n",[15,361,362,363],{},"所以",[35,364,365],{},"此功能通过Http请求的方式调用Picgo Server, 所以需要本地已经安装并启动Picgo, 并已经配置好了图床",[15,367,368],{},"如果使用picgo-core的话，手动配置json文件我觉得更痛苦一些。所以还是基于已经有了Picgo客户端的情况下，简化一些流程",[15,370,237],{},[173,372,375],{"className":373,"code":374,"language":210},[208],"Options:\n  -f, --file \u003Cfile>             要上传的图片文件 (default: null)\n  -d, --dir \u003Cdir>               上传文件夹内所有图片文件 (default: null)\n  -co, --condition \u003Ccondition>  上传文件夹内所有名称包含[--condition]的图片文件 (default: null)\n  -m, --max \u003Cmax>               大于指定大小(kb)的图片不会被上传 (default: 50)\n  -h, --help                    display help for command\n",[180,376,374],{"__ignoreMap":178},[15,378,379],{},"上传文件夹内所有大小符合限制的图片文件",[15,381,382],{},[255,383],{"alt":178,"src":384},"https://img.zzao.club/article/202411191442699.png",[15,386,387],{},"上传所有名称中含有指定文字且大小符合限制的图片文件。没有匹配到会有提示",[15,389,390],{},[255,391],{"alt":178,"src":392},"https://img.zzao.club/article/202411191442700.png",[11,394,396],{"id":395},"tiny-联动-picgo","tiny 联动 picgo",[15,398,399],{},"在tiny命令后使用--picgo 开启压缩后调用picgo",[90,401,402],{},[31,403,404],{},"压缩单个图片文件 并 通过picgo上传 （这里也校验了max）",[173,406,409],{"className":407,"code":408,"language":210},[208],"zz tiny -f ./demo/demo2.png --picgo\n",[180,410,408],{"__ignoreMap":178},[15,412,413],{},[255,414],{"alt":178,"src":415},"https://img.zzao.club/article/202411191442701.png",[90,417,418],{},[31,419,420],{},"压缩文件夹内所有图片文件，并通过picgo上传所有符合大小限制的图片文件",[173,422,425],{"className":423,"code":424,"language":210},[208],"zz tiny -d ./demo --picgo\n",[180,426,424],{"__ignoreMap":178},[15,428,429],{},[255,430],{"alt":178,"src":431},"https://img.zzao.club/article/202411191442702.png",[90,433,434],{},[31,435,436],{},"压缩文件夹内名称含有指定文字的，且符合大小限制的图片，并通过picgo上传",[173,438,441],{"className":439,"code":440,"language":210},[208],"zz tiny -d ./demo -co mo2 --picgo\n",[180,442,440],{"__ignoreMap":178},[15,444,445],{},[255,446],{"alt":178,"src":447},"https://img.zzao.club/article/202411191442703.png",[90,449,450],{},[31,451,452],{},"压缩文件夹内名称含有指定文字的，且符合大小限制的图片，并指定输出的文件名，并通过picgo上传",[15,454,455],{},[180,456,457],{},"ps: 因为名称含有指定文字这个指令是个批量操作，所以输出文件名必定会带一个后缀防止重复",[173,459,462],{"className":460,"code":461,"language":210},[208],"zz tiny -d ./demo -co mo2 -n 自定义 --picgo\n",[180,463,461],{"__ignoreMap":178},[15,465,466],{},[255,467],{"alt":178,"src":468},"https://img.zzao.club/article/202411191442704.png",[11,470,472],{"id":471},"究极联动一条龙服务","究极联动，一条龙服务",[15,474,475],{},"压缩 => 上传 => 自动替换markdown图片链接",[173,477,480],{"className":478,"code":479,"language":210},[208],"./src/index.js tiny -d ./demo/md/配图 --picgo --replace -ref ./demo/md/demo4.md\n",[180,481,479],{"__ignoreMap":178},[15,483,484],{},[255,485],{"alt":178,"src":486},"https://img.zzao.club/article/202411191442705.png",[15,488,489,490,493],{},"此命令目前支持替换Obsidian里的Wiki链接， 即 ",[180,491,492],{},"![[demo2.png]]","\n如下图所示：",[15,495,496],{},[255,497],{"alt":178,"src":498},"https://img.zzao.club/article/202411191442706.png",[15,500,501,502,504,505],{},"被压缩的图片里只要有demo2.png 就会替换成demo2.png压缩后的，上传到图床的url。\n",[180,503,492],{},"  替换为 ",[180,506,507],{},"![](http://www.baidu.com/demo2.png)",[15,509,510],{},[35,511,512],{},"特别注意，有一些Obsidian配置的前置条件：",[28,514,515,524],{},[31,516,517,518,521],{},"需要开启Wiki链接。因为目前版本我",[35,519,520],{},"只实现了替换wiki链接对应的文本",[255,522],{"alt":178,"src":523},"https://img.zzao.club/article/202411191442707.png",[31,525,526],{},"Obsidian默认情况下，粘贴来的图片会显示成 paste img 2023123123.png 这种格式。所以建议安装 paste image rename 这个插件。原因是：",[90,528,529,536],{},[31,530,531,532,535],{},"因为它名称自带空格，和命令行工具无法兼容！如果你批量上传过程中，有一个文件不符合大小限制，没有被上传，也没被替换。此时你想使用",[180,533,534],{},"zz tiny -f ./paste img 2023123123.png  -m 100 --picgo --repalce -ref ../xxx.md"," 继续放大限制，上传+替换时，文件就无法被解析了！",[31,537,538],{},"而且本身的名字比较长，不好找",[15,540,541,542],{},"以下是我的插件配置\n",[255,543],{"alt":178,"src":544},"https://img.zzao.club/article/202411191442708.png",[15,546,547],{},"当我截图后粘贴到md中时显示如下：",[15,549,550],{},[255,551],{"alt":178,"src":552},"https://img.zzao.club/article/202411191442709.png",[15,554,555],{},"在粘贴图片时，文件存放路径配置：",[15,557,558],{},[255,559],{"alt":178,"src":560},"https://img.zzao.club/article/202411191442710.png",[15,562,563],{},"在目录中展示为：",[15,565,566],{},[255,567],{"alt":178,"src":568},"https://img.zzao.club/article/202411191442711.png",[15,570,571],{},"ok，以上就是我的obsidian配置，及我是如何使用zzoffduty-cli的全部内容！",[173,573,575],{"className":175,"code":574,"language":177,"meta":178,"style":178},"\nzz tiny -d ./ -q 60 -m 100 --picgo --replace -ref ../🚀提升效率  ！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md\n\n✔ 正在压缩:.DS_Store\n✖ 不支持此文件类型[.DS_Store]!\n✔ 正在压缩:1-img.png\n✔ 65.0 KB => 14.0 KB (↓78.42%)【 1-img-zz-tiny-1703041107406.png 】\n✔ 正在压缩:2-img.png\n✔ 423.4 KB => 95.9 KB (↓77.35%)【 2-img-zz-tiny-1703041107433.png 】\n✔ 正在压缩:3-img.png\n✔ 62.4 KB => 14.5 KB (↓76.76%)【 3-img-zz-tiny-1703041107602.png 】\n✔ 正在压缩:4-img.png\n✔ 88.1 KB => 17.9 KB (↓79.65%)【 4-img-zz-tiny-1703041107623.png 】\n✔ 正在压缩:5-img.png\n✔ 33.1 KB => 7.2 KB (↓78.23%)【 5-img-zz-tiny-1703041107660.png 】\n✔ 正在压缩:img1.png\n✔ 153.2 KB => 18.2 KB (↓88.14%)【 img1-zz-tiny-1703041107673.png 】\n✔ 正在压缩:img10.png\n✔ 100.1 KB => 37.9 KB (↓62.12%)【 img10-zz-tiny-1703041107703.png 】\n✔ 正在压缩:img11.png\n✔ 42.5 KB => 9.1 KB (↓78.61%)【 img11-zz-tiny-1703041107756.png 】\n✔ 正在压缩:img2.png\n✔ 139.4 KB => 32.2 KB (↓76.9%)【 img2-zz-tiny-1703041107779.png 】\n✔ 正在压缩:img3.png\n✔ 128.0 KB => 29.8 KB (↓76.75%)【 img3-zz-tiny-1703041107821.png 】\n✔ 正在压缩:img4.png\n✔ 79.1 KB => 17.5 KB (↓77.88%)【 img4-zz-tiny-1703041107867.png 】\n✔ 正在压缩:img5.png\n✔ 242.6 KB => 57.5 KB (↓76.31%)【 img5-zz-tiny-1703041107896.png 】\n✔ 正在压缩:img6.png\n✔ 94.7 KB => 21.3 KB (↓77.53%)【 img6-zz-tiny-1703041107974.png 】\n✔ 正在压缩:img7.png\n✔ 110.5 KB => 25.1 KB (↓77.31%)【 img7-zz-tiny-1703041108013.png 】\n✔ 正在压缩:img8.png\n✔ 110.6 KB => 24.4 KB (↓77.91%)【 img8-zz-tiny-1703041108058.png 】\n✔ 正在压缩:img9.png\n✔ 262.4 KB => 65.7 KB (↓74.98%)【 img9-zz-tiny-1703041108106.png 】\n✔ 压缩成功 16 个\n✔ 上传成功 16 个!\n✔ 上传地址:\nhttp://img.zzstudio.cn/1-img-zz-tiny-1703041107406.png\nhttp://img.zzstudio.cn/2-img-zz-tiny-1703041107433.png\nhttp://img.zzstudio.cn/3-img-zz-tiny-1703041107602.png\nhttp://img.zzstudio.cn/4-img-zz-tiny-1703041107623.png\nhttp://img.zzstudio.cn/5-img-zz-tiny-1703041107660.png\nhttp://img.zzstudio.cn/img1-zz-tiny-1703041107673.png\nhttp://img.zzstudio.cn/img10-zz-tiny-1703041107703.png\nhttp://img.zzstudio.cn/img11-zz-tiny-1703041107756.png\nhttp://img.zzstudio.cn/img2-zz-tiny-1703041107779.png\nhttp://img.zzstudio.cn/img3-zz-tiny-1703041107821.png\nhttp://img.zzstudio.cn/img4-zz-tiny-1703041107867.png\nhttp://img.zzstudio.cn/img5-zz-tiny-1703041107896.png\nhttp://img.zzstudio.cn/img6-zz-tiny-1703041107974.png\nhttp://img.zzstudio.cn/img7-zz-tiny-1703041108013.png\nhttp://img.zzstudio.cn/img8-zz-tiny-1703041108058.png\nhttp://img.zzstudio.cn/img9-zz-tiny-1703041108106.png\n✔ [🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md]图片链接替换完成!请前往检查!\n\n",[180,576,577,583,624,628,636,645,653,679,687,709,717,739,747,769,777,799,807,829,837,859,867,889,897,919,927,949,957,979,987,1009,1017,1039,1047,1069,1077,1099,1107,1129,1143,1156,1164,1170,1176,1182,1188,1194,1200,1206,1212,1218,1224,1230,1236,1242,1248,1254,1260],{"__ignoreMap":178},[183,578,579],{"class":185,"line":186},[183,580,582],{"emptyLinePlaceholder":581},true,"\n",[183,584,585,588,591,594,597,600,603,606,609,612,615,618,621],{"class":185,"line":322},[183,586,587],{"class":189},"zz",[183,589,590],{"class":193}," tiny",[183,592,593],{"class":197}," -d",[183,595,596],{"class":193}," ./",[183,598,599],{"class":197}," -q",[183,601,602],{"class":197}," 60",[183,604,605],{"class":197}," -m",[183,607,608],{"class":197}," 100",[183,610,611],{"class":197}," --picgo",[183,613,614],{"class":197}," --replace",[183,616,617],{"class":197}," -ref",[183,619,620],{"class":193}," ../🚀提升效率",[183,622,623],{"class":193},"  ！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md\n",[183,625,626],{"class":185,"line":341},[183,627,582],{"emptyLinePlaceholder":581},[183,629,630,633],{"class":185,"line":356},[183,631,632],{"class":189},"✔",[183,634,635],{"class":193}," 正在压缩:.DS_Store\n",[183,637,639,642],{"class":185,"line":638},5,[183,640,641],{"class":189},"✖",[183,643,644],{"class":193}," 不支持此文件类型[.DS_Store]!\n",[183,646,648,650],{"class":185,"line":647},6,[183,649,632],{"class":189},[183,651,652],{"class":193}," 正在压缩:1-img.png\n",[183,654,656,658,661,664,667,671,674,676],{"class":185,"line":655},7,[183,657,632],{"class":189},[183,659,660],{"class":197}," 65.0",[183,662,663],{"class":193}," KB",[183,665,666],{"class":318}," =",[183,668,670],{"class":669},"sD7c4",">",[183,672,673],{"class":197}," 14.0",[183,675,663],{"class":193},[183,677,678],{"class":318}," (↓78.42%)【 1-img-zz-tiny-1703041107406.png 】\n",[183,680,682,684],{"class":185,"line":681},8,[183,683,632],{"class":189},[183,685,686],{"class":193}," 正在压缩:2-img.png\n",[183,688,690,692,695,697,699,701,704,706],{"class":185,"line":689},9,[183,691,632],{"class":189},[183,693,694],{"class":197}," 423.4",[183,696,663],{"class":193},[183,698,666],{"class":318},[183,700,670],{"class":669},[183,702,703],{"class":197}," 95.9",[183,705,663],{"class":193},[183,707,708],{"class":318}," (↓77.35%)【 2-img-zz-tiny-1703041107433.png 】\n",[183,710,712,714],{"class":185,"line":711},10,[183,713,632],{"class":189},[183,715,716],{"class":193}," 正在压缩:3-img.png\n",[183,718,720,722,725,727,729,731,734,736],{"class":185,"line":719},11,[183,721,632],{"class":189},[183,723,724],{"class":197}," 62.4",[183,726,663],{"class":193},[183,728,666],{"class":318},[183,730,670],{"class":669},[183,732,733],{"class":197}," 14.5",[183,735,663],{"class":193},[183,737,738],{"class":318}," (↓76.76%)【 3-img-zz-tiny-1703041107602.png 】\n",[183,740,742,744],{"class":185,"line":741},12,[183,743,632],{"class":189},[183,745,746],{"class":193}," 正在压缩:4-img.png\n",[183,748,750,752,755,757,759,761,764,766],{"class":185,"line":749},13,[183,751,632],{"class":189},[183,753,754],{"class":197}," 88.1",[183,756,663],{"class":193},[183,758,666],{"class":318},[183,760,670],{"class":669},[183,762,763],{"class":197}," 17.9",[183,765,663],{"class":193},[183,767,768],{"class":318}," (↓79.65%)【 4-img-zz-tiny-1703041107623.png 】\n",[183,770,772,774],{"class":185,"line":771},14,[183,773,632],{"class":189},[183,775,776],{"class":193}," 正在压缩:5-img.png\n",[183,778,780,782,785,787,789,791,794,796],{"class":185,"line":779},15,[183,781,632],{"class":189},[183,783,784],{"class":197}," 33.1",[183,786,663],{"class":193},[183,788,666],{"class":318},[183,790,670],{"class":669},[183,792,793],{"class":197}," 7.2",[183,795,663],{"class":193},[183,797,798],{"class":318}," (↓78.23%)【 5-img-zz-tiny-1703041107660.png 】\n",[183,800,802,804],{"class":185,"line":801},16,[183,803,632],{"class":189},[183,805,806],{"class":193}," 正在压缩:img1.png\n",[183,808,810,812,815,817,819,821,824,826],{"class":185,"line":809},17,[183,811,632],{"class":189},[183,813,814],{"class":197}," 153.2",[183,816,663],{"class":193},[183,818,666],{"class":318},[183,820,670],{"class":669},[183,822,823],{"class":197}," 18.2",[183,825,663],{"class":193},[183,827,828],{"class":318}," (↓88.14%)【 img1-zz-tiny-1703041107673.png 】\n",[183,830,832,834],{"class":185,"line":831},18,[183,833,632],{"class":189},[183,835,836],{"class":193}," 正在压缩:img10.png\n",[183,838,840,842,845,847,849,851,854,856],{"class":185,"line":839},19,[183,841,632],{"class":189},[183,843,844],{"class":197}," 100.1",[183,846,663],{"class":193},[183,848,666],{"class":318},[183,850,670],{"class":669},[183,852,853],{"class":197}," 37.9",[183,855,663],{"class":193},[183,857,858],{"class":318}," (↓62.12%)【 img10-zz-tiny-1703041107703.png 】\n",[183,860,862,864],{"class":185,"line":861},20,[183,863,632],{"class":189},[183,865,866],{"class":193}," 正在压缩:img11.png\n",[183,868,870,872,875,877,879,881,884,886],{"class":185,"line":869},21,[183,871,632],{"class":189},[183,873,874],{"class":197}," 42.5",[183,876,663],{"class":193},[183,878,666],{"class":318},[183,880,670],{"class":669},[183,882,883],{"class":197}," 9.1",[183,885,663],{"class":193},[183,887,888],{"class":318}," (↓78.61%)【 img11-zz-tiny-1703041107756.png 】\n",[183,890,892,894],{"class":185,"line":891},22,[183,893,632],{"class":189},[183,895,896],{"class":193}," 正在压缩:img2.png\n",[183,898,900,902,905,907,909,911,914,916],{"class":185,"line":899},23,[183,901,632],{"class":189},[183,903,904],{"class":197}," 139.4",[183,906,663],{"class":193},[183,908,666],{"class":318},[183,910,670],{"class":669},[183,912,913],{"class":197}," 32.2",[183,915,663],{"class":193},[183,917,918],{"class":318}," (↓76.9%)【 img2-zz-tiny-1703041107779.png 】\n",[183,920,922,924],{"class":185,"line":921},24,[183,923,632],{"class":189},[183,925,926],{"class":193}," 正在压缩:img3.png\n",[183,928,930,932,935,937,939,941,944,946],{"class":185,"line":929},25,[183,931,632],{"class":189},[183,933,934],{"class":197}," 128.0",[183,936,663],{"class":193},[183,938,666],{"class":318},[183,940,670],{"class":669},[183,942,943],{"class":197}," 29.8",[183,945,663],{"class":193},[183,947,948],{"class":318}," (↓76.75%)【 img3-zz-tiny-1703041107821.png 】\n",[183,950,952,954],{"class":185,"line":951},26,[183,953,632],{"class":189},[183,955,956],{"class":193}," 正在压缩:img4.png\n",[183,958,960,962,965,967,969,971,974,976],{"class":185,"line":959},27,[183,961,632],{"class":189},[183,963,964],{"class":197}," 79.1",[183,966,663],{"class":193},[183,968,666],{"class":318},[183,970,670],{"class":669},[183,972,973],{"class":197}," 17.5",[183,975,663],{"class":193},[183,977,978],{"class":318}," (↓77.88%)【 img4-zz-tiny-1703041107867.png 】\n",[183,980,982,984],{"class":185,"line":981},28,[183,983,632],{"class":189},[183,985,986],{"class":193}," 正在压缩:img5.png\n",[183,988,990,992,995,997,999,1001,1004,1006],{"class":185,"line":989},29,[183,991,632],{"class":189},[183,993,994],{"class":197}," 242.6",[183,996,663],{"class":193},[183,998,666],{"class":318},[183,1000,670],{"class":669},[183,1002,1003],{"class":197}," 57.5",[183,1005,663],{"class":193},[183,1007,1008],{"class":318}," (↓76.31%)【 img5-zz-tiny-1703041107896.png 】\n",[183,1010,1012,1014],{"class":185,"line":1011},30,[183,1013,632],{"class":189},[183,1015,1016],{"class":193}," 正在压缩:img6.png\n",[183,1018,1020,1022,1025,1027,1029,1031,1034,1036],{"class":185,"line":1019},31,[183,1021,632],{"class":189},[183,1023,1024],{"class":197}," 94.7",[183,1026,663],{"class":193},[183,1028,666],{"class":318},[183,1030,670],{"class":669},[183,1032,1033],{"class":197}," 21.3",[183,1035,663],{"class":193},[183,1037,1038],{"class":318}," (↓77.53%)【 img6-zz-tiny-1703041107974.png 】\n",[183,1040,1042,1044],{"class":185,"line":1041},32,[183,1043,632],{"class":189},[183,1045,1046],{"class":193}," 正在压缩:img7.png\n",[183,1048,1050,1052,1055,1057,1059,1061,1064,1066],{"class":185,"line":1049},33,[183,1051,632],{"class":189},[183,1053,1054],{"class":197}," 110.5",[183,1056,663],{"class":193},[183,1058,666],{"class":318},[183,1060,670],{"class":669},[183,1062,1063],{"class":197}," 25.1",[183,1065,663],{"class":193},[183,1067,1068],{"class":318}," (↓77.31%)【 img7-zz-tiny-1703041108013.png 】\n",[183,1070,1072,1074],{"class":185,"line":1071},34,[183,1073,632],{"class":189},[183,1075,1076],{"class":193}," 正在压缩:img8.png\n",[183,1078,1080,1082,1085,1087,1089,1091,1094,1096],{"class":185,"line":1079},35,[183,1081,632],{"class":189},[183,1083,1084],{"class":197}," 110.6",[183,1086,663],{"class":193},[183,1088,666],{"class":318},[183,1090,670],{"class":669},[183,1092,1093],{"class":197}," 24.4",[183,1095,663],{"class":193},[183,1097,1098],{"class":318}," (↓77.91%)【 img8-zz-tiny-1703041108058.png 】\n",[183,1100,1102,1104],{"class":185,"line":1101},36,[183,1103,632],{"class":189},[183,1105,1106],{"class":193}," 正在压缩:img9.png\n",[183,1108,1110,1112,1115,1117,1119,1121,1124,1126],{"class":185,"line":1109},37,[183,1111,632],{"class":189},[183,1113,1114],{"class":197}," 262.4",[183,1116,663],{"class":193},[183,1118,666],{"class":318},[183,1120,670],{"class":669},[183,1122,1123],{"class":197}," 65.7",[183,1125,663],{"class":193},[183,1127,1128],{"class":318}," (↓74.98%)【 img9-zz-tiny-1703041108106.png 】\n",[183,1130,1132,1134,1137,1140],{"class":185,"line":1131},38,[183,1133,632],{"class":189},[183,1135,1136],{"class":193}," 压缩成功",[183,1138,1139],{"class":197}," 16",[183,1141,1142],{"class":193}," 个\n",[183,1144,1146,1148,1151,1153],{"class":185,"line":1145},39,[183,1147,632],{"class":189},[183,1149,1150],{"class":193}," 上传成功",[183,1152,1139],{"class":197},[183,1154,1155],{"class":193}," 个!\n",[183,1157,1159,1161],{"class":185,"line":1158},40,[183,1160,632],{"class":189},[183,1162,1163],{"class":193}," 上传地址:\n",[183,1165,1167],{"class":185,"line":1166},41,[183,1168,1169],{"class":189},"http://img.zzstudio.cn/1-img-zz-tiny-1703041107406.png\n",[183,1171,1173],{"class":185,"line":1172},42,[183,1174,1175],{"class":189},"http://img.zzstudio.cn/2-img-zz-tiny-1703041107433.png\n",[183,1177,1179],{"class":185,"line":1178},43,[183,1180,1181],{"class":189},"http://img.zzstudio.cn/3-img-zz-tiny-1703041107602.png\n",[183,1183,1185],{"class":185,"line":1184},44,[183,1186,1187],{"class":189},"http://img.zzstudio.cn/4-img-zz-tiny-1703041107623.png\n",[183,1189,1191],{"class":185,"line":1190},45,[183,1192,1193],{"class":189},"http://img.zzstudio.cn/5-img-zz-tiny-1703041107660.png\n",[183,1195,1197],{"class":185,"line":1196},46,[183,1198,1199],{"class":189},"http://img.zzstudio.cn/img1-zz-tiny-1703041107673.png\n",[183,1201,1203],{"class":185,"line":1202},47,[183,1204,1205],{"class":189},"http://img.zzstudio.cn/img10-zz-tiny-1703041107703.png\n",[183,1207,1209],{"class":185,"line":1208},48,[183,1210,1211],{"class":189},"http://img.zzstudio.cn/img11-zz-tiny-1703041107756.png\n",[183,1213,1215],{"class":185,"line":1214},49,[183,1216,1217],{"class":189},"http://img.zzstudio.cn/img2-zz-tiny-1703041107779.png\n",[183,1219,1221],{"class":185,"line":1220},50,[183,1222,1223],{"class":189},"http://img.zzstudio.cn/img3-zz-tiny-1703041107821.png\n",[183,1225,1227],{"class":185,"line":1226},51,[183,1228,1229],{"class":189},"http://img.zzstudio.cn/img4-zz-tiny-1703041107867.png\n",[183,1231,1233],{"class":185,"line":1232},52,[183,1234,1235],{"class":189},"http://img.zzstudio.cn/img5-zz-tiny-1703041107896.png\n",[183,1237,1239],{"class":185,"line":1238},53,[183,1240,1241],{"class":189},"http://img.zzstudio.cn/img6-zz-tiny-1703041107974.png\n",[183,1243,1245],{"class":185,"line":1244},54,[183,1246,1247],{"class":189},"http://img.zzstudio.cn/img7-zz-tiny-1703041108013.png\n",[183,1249,1251],{"class":185,"line":1250},55,[183,1252,1253],{"class":189},"http://img.zzstudio.cn/img8-zz-tiny-1703041108058.png\n",[183,1255,1257],{"class":185,"line":1256},56,[183,1258,1259],{"class":189},"http://img.zzstudio.cn/img9-zz-tiny-1703041108106.png\n",[183,1261,1263,1265,1268,1271],{"class":185,"line":1262},57,[183,1264,632],{"class":189},[183,1266,1267],{"class":318}," [🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md]图片链接替换完成",[183,1269,1270],{"class":669},"!",[183,1272,1273],{"class":189},"请前往检查!\n",[15,1275,1276],{},"然后直接复制，粘贴到各大平台即可！",[15,1278,1279],{},[180,1280,1281],{},"使用前请仔细阅读readme.md，及最后的免责声明（害怕）",[15,1283,1284],{},[180,1285,1286],{},"这次上传的图片太多，真的怕七牛云空间不够了。。",[11,1288,1289],{"id":1289},"下一步计划",[15,1291,1292],{},[35,1293,1294],{},"提高兼容性！",[90,1296,1297,1304,1307],{},[31,1298,1299,1300,1303],{},"准备把",[35,1301,1302],{},"文本替换功能","抽离出来，现在只是满足了自己的需求。",[31,1305,1306],{},"可以再加一个掘金文章里用的图片缩放功能，或者自定义replace函数、正则表达式等。",[31,1308,1309],{},"收集更多其他人日常使用方式，融合进来",[11,1311,1312],{"id":1312},"小结",[15,1314,1315],{},"这是一个我在为了简化日常工作和生活中一些复杂的、繁琐的、可联动的操作而开发的命令行工具，是一个纯粹为了效率的实用工具。",[15,1317,1318],{},"后续随着我自己的使用或其他人的反馈，我会加入更多的功能把它一步步的完善。同时一些适合可视化操作的功能，也会拆成web、客户端、小程序等形态，都是我的\"预备摊位\"！！",[15,1320,1321,1322,1327,1328],{},"如果你对这个产品感兴趣或者有好的功能建议要告诉我，代码在",[64,1323,1326],{"href":1324,"rel":1325},"https://github.com/zzdaddy/zzoffduty-cli",[68],"Github","，也欢迎关注公众号：",[64,1329,1332],{"href":1330,"rel":1331},"https://mp.weixin.qq.com/s/A8wHxE5Q2jl6Su_7QA6f-A",[68],"早早集市",[15,1334,1335],{},"感谢你的阅读，我是枣把儿~",[1337,1338,1339],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":178,"searchDepth":322,"depth":322,"links":1341},[1342,1343,1344,1345,1346,1347,1348,1349,1350],{"id":13,"depth":322,"text":13},{"id":26,"depth":322,"text":26},{"id":161,"depth":322,"text":161},{"id":233,"depth":322,"text":234},{"id":260,"depth":322,"text":261},{"id":395,"depth":322,"text":396},{"id":471,"depth":322,"text":472},{"id":1289,"depth":322,"text":1289},{"id":1312,"depth":322,"text":1312},"2023-12-13T00:00:00.000Z","sharp压缩图片，picgo自动上传","md",null,"2025-08-19T00:00:00.000Z",{"published":1357,"category":1358},"2023-01-01","技术","/post/cli/sharp-picgo-cli-tool","---\ntitle: 🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具\npublished: 2023-01-01\nauthor: zzdaddy\ndescription: sharp压缩图片，picgo自动上传\ntags: [\"技术\", \"Cli\"]\ncategory: 技术\nlastmod: 2025-08-19\ndate: 2023-12-13\nshowTitle: 🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具\n---\n## 引言\n\n大家好啊， 我是枣把儿！\n\n最近写作比较多，而要发平台又好几个，插入图片的时候就很不方便。一开始我是白嫖掘金的图片地址，但是每个平台都会自动打个水印上去...\n\n于是我又把之前写的命令行工具拿出来翻新了一些，加入了Sharp图片压缩、Picgo上传图床、markdown文件内容替换这三大内容，极大的改善了我的发文体验，并且感觉在日常中也比较实用。和大家分享一下~\n\n## 功能一览\n\n1. 国际化文件翻译 - **translate**\n   1. 目前用于公司内部批量翻译国际化文件, 所以需要遵循一定的规则\n   2. 基于百度翻译, 需要自定义自己的appId和key\n   3. 支持指定单个文件翻译\n   4. 支持指定文件夹, 批量翻译所有文件\n\n2. 压缩文件 - **tiny**\n   1. 基于[sharp](https://sharp.pixelplumbing.com/install#custom-libvips), sharp支持的文件都可以压缩\n   2. 输出目录: 所有参数下, 压缩后文件都会输出到同级目录中\n   3. 输出时显示大小及压缩比例\n\t如: ✔ 190.4 KB => 115.2 KB (↓39.52%)【 demo1-zz-tiny-1702631665830.gif 】\n   4. 支持自定义名称输出 --name=xxx.png\n   5. 支持自定义压缩质量 --quality=70 (1-100)\n   6. 支持单个文件压缩 --file=xxx.png\n   7. 支持批量文件压缩\n      - 指定文件夹 --dir=./demo (基于当前命令运行的目录)\n        - 支持相对路径\n        - 支持绝对路径\n      - 指定文件名 --condition=abc\n         - 模糊匹配 所有包含abc且支持的文件类型都会被压缩\n         - 如果没有指定--dir , 则--condition会在当前目录下查找\n         - 模糊匹配到的内容, 会标红处理\n      - 若批量压缩时, 指定了name(第四条), 则自定义名称后会自动拼接一个序号, 避免覆盖\n   8. **支持和picgo联动, 压缩完后直接上传到图床**\n      1. 需要先安装picgo, 启动, 并配置好图床配置\n      2. 限制文件大小, 超过 max 的文件不会被上传\n\n3. 通过 Picgo 上传到图床 - **picgo**\n   1. 支持指定文件 -f 上传\n   2. 支持指定文件夹 -d 批量上传全部\n   3. 支持限制大小 -m 默认只上传60kb以内的图片\n   4. 支持模糊匹配 -co 文件名中含有co的图片, 且满足大小限制, 都会被上传\n\n4. 究极联动： **tiny压缩 -> 自动传给picgo -> 自动把obsidian里的本地图片链接替换为上传后的url**\n\n## 安装\n\n先安装[sharp](https://sharp.pixelplumbing.com/install#custom-libvips)的两个前置依赖包。@img/sharp-darwin-arm64@0.33.0 、 @img/sharp-win32-x64@0.33.0\n\n我的系统是macos M2，所以需要安装@img/sharp-darwin-arm64\n\n```shell\nnpm i -g @img/sharp-darwin-arm64@0.33.0\n```\n\nwindows10/11 (win32-x64)用户请安装  @img/sharp-win32-x64@0.33.0\n\n```\n npm i -g @img/sharp-win32-x64@0.33.0\n```\n\n然后安装工具本体\n\n```\nnpm i -g zzoffduty-cli@latest\n```\n\n运行 -h 看看是否成功\n\n```\nzz -h\n```\n\n## tiny命令 实现压缩\n\n使用help命令查看所有支持的功能\n```\nzz tiny --help\n\n  -f, --file \u003Cfile>             要压缩的图片文件 (default: null)\n  -d, --dir \u003Cdir>               压缩文件夹内所有文件 (default: null)\n  -co, --condition \u003Ccondition>  压缩文件夹内所有名称包含[--condition]的图片文件 (default: null)\n  -q, --quality \u003Cquality>       压缩质量(1-100) (default: 75)\n  -c, --colours \u003Ccolours>       GIF色彩保留(2-256) (default: 128)\n  -n, --name \u003Cname>             指定文件名输出 (default: \"\")\n  -m, --max \u003Cmax>               限制要上传的文件大小(kb)(仅当开启 --picgo 时会用到) (default: 50)\n  --picgo [type]                调用picgo (无参数) (default: null)\n  --no-picgo [type]             不调用picgo (无参数) (default: null)\n  -h, --help                    display help for command\n```\n\n压缩功能演示：\n\n- 指定目录压缩，并指定名称输出\n\n![](https://img.zzao.club/article/202411191442697.png)\n\n\n##  picgo命令 实现上传图床\n\nPicGo在`2.2.0`版本开始内置了一个小型的服务器，用于接收来自其他应用的HTTP请求来上传图片。\n\n默认监听地址： `127.0.0.1`，默认监听端口：`36677`\n\n以POST请求去上传\n-   method: `POST`\n-   url: `http://127.0.0.1:36677/upload` （此处以默认配置为例）\n-   request body: `{list: ['xxx.jpg']}` 必须是JSON格式\n\n返回的数据：\n\n```typescript\n{\n  \"success\": true, // or false\n  \"result\": [\"url\"]\n}\n```\n\n\n所以**此功能通过Http请求的方式调用Picgo Server, 所以需要本地已经安装并启动Picgo, 并已经配置好了图床**\n\n如果使用picgo-core的话，手动配置json文件我觉得更痛苦一些。所以还是基于已经有了Picgo客户端的情况下，简化一些流程\n\n使用help命令查看所有支持的功能\n\n```\nOptions:\n  -f, --file \u003Cfile>             要上传的图片文件 (default: null)\n  -d, --dir \u003Cdir>               上传文件夹内所有图片文件 (default: null)\n  -co, --condition \u003Ccondition>  上传文件夹内所有名称包含[--condition]的图片文件 (default: null)\n  -m, --max \u003Cmax>               大于指定大小(kb)的图片不会被上传 (default: 50)\n  -h, --help                    display help for command\n```\n\n上传文件夹内所有大小符合限制的图片文件\n\n![](https://img.zzao.club/article/202411191442699.png)\n\n上传所有名称中含有指定文字且大小符合限制的图片文件。没有匹配到会有提示\n\n![](https://img.zzao.club/article/202411191442700.png)\n\n\n##  tiny 联动 picgo\n\n在tiny命令后使用--picgo 开启压缩后调用picgo\n\n- 压缩单个图片文件 并 通过picgo上传 （这里也校验了max）\n\n```\nzz tiny -f ./demo/demo2.png --picgo\n```\n\n![](https://img.zzao.club/article/202411191442701.png)\n\n- 压缩文件夹内所有图片文件，并通过picgo上传所有符合大小限制的图片文件\n\n```\nzz tiny -d ./demo --picgo\n```\n\n![](https://img.zzao.club/article/202411191442702.png)\n\n\n- 压缩文件夹内名称含有指定文字的，且符合大小限制的图片，并通过picgo上传\n\n```\nzz tiny -d ./demo -co mo2 --picgo\n```\n\n![](https://img.zzao.club/article/202411191442703.png)\n\n- 压缩文件夹内名称含有指定文字的，且符合大小限制的图片，并指定输出的文件名，并通过picgo上传\n\n`ps: 因为名称含有指定文字这个指令是个批量操作，所以输出文件名必定会带一个后缀防止重复`\n\n```\nzz tiny -d ./demo -co mo2 -n 自定义 --picgo\n```\n\n![](https://img.zzao.club/article/202411191442704.png)\n\n## 究极联动，一条龙服务\n\n压缩 => 上传 => 自动替换markdown图片链接\n\n```\n./src/index.js tiny -d ./demo/md/配图 --picgo --replace -ref ./demo/md/demo4.md\n```\n\n![](https://img.zzao.club/article/202411191442705.png)\n\n此命令目前支持替换Obsidian里的Wiki链接， 即 `![[demo2.png]]`\n如下图所示：\n\n![](https://img.zzao.club/article/202411191442706.png)\n\n 被压缩的图片里只要有demo2.png 就会替换成demo2.png压缩后的，上传到图床的url。\n`![[demo2.png]]`  替换为 `![](http://www.baidu.com/demo2.png)`\n\n**特别注意，有一些Obsidian配置的前置条件：**\n\n1.  需要开启Wiki链接。因为目前版本我**只实现了替换wiki链接对应的文本**\n![](https://img.zzao.club/article/202411191442707.png)\n2. Obsidian默认情况下，粘贴来的图片会显示成 paste img 2023123123.png 这种格式。所以建议安装 paste image rename 这个插件。原因是：\n- 因为它名称自带空格，和命令行工具无法兼容！如果你批量上传过程中，有一个文件不符合大小限制，没有被上传，也没被替换。此时你想使用`zz tiny -f ./paste img 2023123123.png  -m 100 --picgo --repalce -ref ../xxx.md` 继续放大限制，上传+替换时，文件就无法被解析了！\n- 而且本身的名字比较长，不好找\n\n以下是我的插件配置\n![](https://img.zzao.club/article/202411191442708.png)\n\n当我截图后粘贴到md中时显示如下：\n\n![](https://img.zzao.club/article/202411191442709.png)\n\n在粘贴图片时，文件存放路径配置：\n\n![](https://img.zzao.club/article/202411191442710.png)\n\n在目录中展示为：\n\n![](https://img.zzao.club/article/202411191442711.png)\n\nok，以上就是我的obsidian配置，及我是如何使用zzoffduty-cli的全部内容！\n\n```shell\n\nzz tiny -d ./ -q 60 -m 100 --picgo --replace -ref ../🚀提升效率  ！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md\n\n✔ 正在压缩:.DS_Store\n✖ 不支持此文件类型[.DS_Store]!\n✔ 正在压缩:1-img.png\n✔ 65.0 KB => 14.0 KB (↓78.42%)【 1-img-zz-tiny-1703041107406.png 】\n✔ 正在压缩:2-img.png\n✔ 423.4 KB => 95.9 KB (↓77.35%)【 2-img-zz-tiny-1703041107433.png 】\n✔ 正在压缩:3-img.png\n✔ 62.4 KB => 14.5 KB (↓76.76%)【 3-img-zz-tiny-1703041107602.png 】\n✔ 正在压缩:4-img.png\n✔ 88.1 KB => 17.9 KB (↓79.65%)【 4-img-zz-tiny-1703041107623.png 】\n✔ 正在压缩:5-img.png\n✔ 33.1 KB => 7.2 KB (↓78.23%)【 5-img-zz-tiny-1703041107660.png 】\n✔ 正在压缩:img1.png\n✔ 153.2 KB => 18.2 KB (↓88.14%)【 img1-zz-tiny-1703041107673.png 】\n✔ 正在压缩:img10.png\n✔ 100.1 KB => 37.9 KB (↓62.12%)【 img10-zz-tiny-1703041107703.png 】\n✔ 正在压缩:img11.png\n✔ 42.5 KB => 9.1 KB (↓78.61%)【 img11-zz-tiny-1703041107756.png 】\n✔ 正在压缩:img2.png\n✔ 139.4 KB => 32.2 KB (↓76.9%)【 img2-zz-tiny-1703041107779.png 】\n✔ 正在压缩:img3.png\n✔ 128.0 KB => 29.8 KB (↓76.75%)【 img3-zz-tiny-1703041107821.png 】\n✔ 正在压缩:img4.png\n✔ 79.1 KB => 17.5 KB (↓77.88%)【 img4-zz-tiny-1703041107867.png 】\n✔ 正在压缩:img5.png\n✔ 242.6 KB => 57.5 KB (↓76.31%)【 img5-zz-tiny-1703041107896.png 】\n✔ 正在压缩:img6.png\n✔ 94.7 KB => 21.3 KB (↓77.53%)【 img6-zz-tiny-1703041107974.png 】\n✔ 正在压缩:img7.png\n✔ 110.5 KB => 25.1 KB (↓77.31%)【 img7-zz-tiny-1703041108013.png 】\n✔ 正在压缩:img8.png\n✔ 110.6 KB => 24.4 KB (↓77.91%)【 img8-zz-tiny-1703041108058.png 】\n✔ 正在压缩:img9.png\n✔ 262.4 KB => 65.7 KB (↓74.98%)【 img9-zz-tiny-1703041108106.png 】\n✔ 压缩成功 16 个\n✔ 上传成功 16 个!\n✔ 上传地址:\nhttp://img.zzstudio.cn/1-img-zz-tiny-1703041107406.png\nhttp://img.zzstudio.cn/2-img-zz-tiny-1703041107433.png\nhttp://img.zzstudio.cn/3-img-zz-tiny-1703041107602.png\nhttp://img.zzstudio.cn/4-img-zz-tiny-1703041107623.png\nhttp://img.zzstudio.cn/5-img-zz-tiny-1703041107660.png\nhttp://img.zzstudio.cn/img1-zz-tiny-1703041107673.png\nhttp://img.zzstudio.cn/img10-zz-tiny-1703041107703.png\nhttp://img.zzstudio.cn/img11-zz-tiny-1703041107756.png\nhttp://img.zzstudio.cn/img2-zz-tiny-1703041107779.png\nhttp://img.zzstudio.cn/img3-zz-tiny-1703041107821.png\nhttp://img.zzstudio.cn/img4-zz-tiny-1703041107867.png\nhttp://img.zzstudio.cn/img5-zz-tiny-1703041107896.png\nhttp://img.zzstudio.cn/img6-zz-tiny-1703041107974.png\nhttp://img.zzstudio.cn/img7-zz-tiny-1703041108013.png\nhttp://img.zzstudio.cn/img8-zz-tiny-1703041108058.png\nhttp://img.zzstudio.cn/img9-zz-tiny-1703041108106.png\n✔ [🚀提升效率！早早下班！Sharp+Picgo实现压缩后上传并替换外链的命令行工具.md]图片链接替换完成!请前往检查!\n\n```\n\n然后直接复制，粘贴到各大平台即可！\n\n`使用前请仔细阅读readme.md，及最后的免责声明（害怕）`\n\n`这次上传的图片太多，真的怕七牛云空间不够了。。`\n\n## 下一步计划\n\n**提高兼容性！**\n\n- 准备把**文本替换功能**抽离出来，现在只是满足了自己的需求。\n- 可以再加一个掘金文章里用的图片缩放功能，或者自定义replace函数、正则表达式等。\n- 收集更多其他人日常使用方式，融合进来\n\n\n## 小结\n\n这是一个我在为了简化日常工作和生活中一些复杂的、繁琐的、可联动的操作而开发的命令行工具，是一个纯粹为了效率的实用工具。\n\n后续随着我自己的使用或其他人的反馈，我会加入更多的功能把它一步步的完善。同时一些适合可视化操作的功能，也会拆成web、客户端、小程序等形态，都是我的\"预备摊位\"！！\n\n如果你对这个产品感兴趣或者有好的功能建议要告诉我，代码在[Github](https://github.com/zzdaddy/zzoffduty-cli)，也欢迎关注公众号：[早早集市](https://mp.weixin.qq.com/s/A8wHxE5Q2jl6Su_7QA6f-A)\n\n感谢你的阅读，我是枣把儿\\~",{"title":5,"description":1352},"post/CLI/sharp-picgo-cli-tool",[1358,1364],"Cli","_LRTWKzRp1gARrXAbe-Ee0f6BNvobNHAGl-pqWTYsm8",[1367,1371],{"title":1368,"path":1369,"stem":1370},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":1372,"path":1373,"stem":1374},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005087065]