写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!


文章目录

  • 前言
  • 预备内容
  • 转webp程序
  • PicGo设置
  • Quicker设置
  • 视频演示
  • 总结
  • 互动
  • 致谢
  • 参考


前言

在自建博客网站中,页面中图片过大对响应时间的影响非常显著:大尺寸图片文件体积通常可达数MB,而优化后的图片可能仅需几十KB。未压缩的3MB图片与优化后的100KB图片相比,传输时间在5Mbps带宽下相差近25秒。频繁的大图片请求会增加服务器I/O负载,尤其在流量高峰期,可能触发服务器限流或宕机。直接导致转化率下降40%。

对于用户来说,页面加载时间每增加1秒,跳出率提升12%。用户对大图片导致的缓慢加载缺乏耐心,尤其移动端用户更倾向于快速离开。SEO排名受损,搜索引擎将页面速度纳入排名算法,大图片会降低页面速度得分。

因此通常可以使用压缩工具,在保持视觉质量前提下压缩图片(如将PNG转为WebP格式可减少30%体积),加快网站的响应,避免用户长时间的等待。

但实际上有着很多的在线工具、软件和插件,如 Plus WebP插件、 caesium、cdkm,有免费的也有收费的。要么收集图像后批量转换,或者一张张转化,相对繁琐。插件通常只能处理媒体库中的图像,在实际编写文章的过程里很麻烦。

因此本文旨在自己编写程序实现格式转化的同时上传到图床的,实现从获取图像到返回公网可访问的图像链接的自动化流程。

在这里插入图片描述


预备内容

  • Minio图床:提供对象存储
  • 公网访问链接:cploar内网穿透,cpolar推荐链接
  • PicGo:快速上传
  • 格式转化程序:自行编写
  • 自动化流程:Quicker

Quicker安装就不说了,直接安装就是,图床相关的内容之前有过博客介绍,不重复赘述,可参考下列链接:

【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
【本地MinIO图床远程访问】Cpolar TCP隧道+PicGo插件,让MinIO图床一键触达


转webp程序

先看眼对应的依赖:

  • python=3.7
  • Pillow=9.5.0
  • pywin32=308
  • argparse
  • pyinstaller

笔者创建了新环境进行安装,conda create -n envs_name python=3.7

程序简单不多说,只需要知道pywin32是为了对粘贴板进行操作即可。

#!bin/bash
# name: main.pyfrom io import BytesIO
from os import remove as osremove
from PIL import Image
import win32clipboard
from argparse import ArgumentParserdef get_image(args):# 使用粘贴板的图像if args.clipboard:try:win32clipboard.OpenClipboard()# 粘贴板图像可得if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_DIB):data = win32clipboard.GetClipboardData(win32clipboard.CF_DIB)win32clipboard.CloseClipboard()# 将DIB数据转换为PIL图像stream = BytesIO(data)img = Image.open(stream)return img# 粘贴板图像不可得else:win32clipboard.CloseClipboard()return Noneexcept Exception as e:print(e)return None# 使用图片文件else:return Image.open(args.file)def save_image(image, args):try:image.save(f"tmp.webp", format="webp", QUALITY=args.quality)return Trueexcept Exception as e:print(e)return Falsedef main():# 参数说明parser = ArgumentParser()parser.add_argument('--clipboard', '-c', type=bool, default=True, help="convert clipboard image to webp")parser.add_argument('--quality', '-q', type=int,default=80, help="Compression ratio,100 means lossless compression")parser.add_argument('--file', '-f', type=str, default='./test.png', help="path of the image")args = parser.parse_args()# 尝试移除临时文件try:osremove("dist/tmp.webp")except Exception as e:pass# 获取图像img = get_image(args)if img is None:print("剪贴板中没有找到图像!")returnwebp_img = img.copy()save_image(webp_img, args)if __name__ == "__main__":main()

为了方便Quicker,在编写成功后也进行了打包,后面也会直接给出链接,没有环境也不用担心。.

打包方法:pyinstaller --onefile --windowed main.py,打包好的.exe,点击下载

上述代码的参数有三个:

① --clipboard:将粘贴板上的图像进行转webp格式
② --quality:压缩比例,100默认不压缩
③ --file:将特定的图像进行进行转webp格式,当且仅当clipboard为否的情况下生效

批量处理的逻辑,可自行扩展,不难的。


PicGo设置

PicGo在2.2.0版本开始内置了一个小型的服务器,用于接收来自其他应用的HTTP请求来上传图片。

默认监听地址: 127.0.0.1,默认监听端口:36677

更多上传方式:PicGo-Server的使用

在这里插入图片描述

由于防止过多的临时文件,因此设置了转化后的文件名字是固定的,因此上传时候需要重命名,建议时间戳,不重复。

在这里插入图片描述


Quicker设置

新建动作:大致有几个步骤,运行截图,将截图内容写入粘贴板,调用打包程序转化格式,进一步的读取该转化文件,并通过PicGo-Server上传到对应的图床。

下面对其的每个部分进行截图说明:

  • 运行动作
    在这里插入图片描述

  • 等待粘贴板内容改变
    在这里插入图片描述

  • 运行打包程序,保存转化后的图像在这里插入图片描述

  • 等待时间,等待打包程序结束
    在这里插入图片描述

  • 将保存的图像放入粘贴板在这里插入图片描述

  • HTTP请求,使用PicGo着图床上传
    在这里插入图片描述


视频演示

Quicker截图上传图床演示视频


总结

总结: 本文通过Quicker串联动作,实现从截图到返回公网可访问的图像链接的自动化流程。


互动

  • 上述内容对你有用吗?

欢迎在评论区解答上述问题,分享你的经验和疑问!

当然,也欢迎一键三连给我鼓励和支持:👍点赞 📁 关注 💬评论 💰打赏。


致谢

欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。


参考

[1] cpolar推荐链接
[2] Quicker
[3] https://saerasoft.com/caesium/
[4] https://cdkm.com/cn/jpg-to-webp
[5] 【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
[6] 【本地MinIO图床远程访问】Cpolar TCP隧道+PicGo插件,让MinIO图床一键触达
[7] PicGo-Server的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/83621.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/83621.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/83621.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python Requests库完全指南:从入门到精通

引言 在Python的生态系统中,requests库以其简洁优雅的API设计和强大的功能,成为HTTP请求处理领域的标杆工具。无论是数据爬虫开发、API接口调用,还是自动化测试场景,requests都能将复杂的网络交互简化为几行可读性极高的代码。相…

渗透测试核心技术:内网渗透与横向移动

内网渗透是红队行动的关键阶段,攻击者通过突破边界进入内网后,需快速定位域控、横向移动并维持权限。本节从内网环境搭建、信息收集、横向移动技巧到权限维持工具,系统讲解如何在内网中隐蔽行动并扩大战果。 1. 内网环境搭建与基础配置 目标: 模拟真实企业网络,构建包含…

学习FineBI

FineBI 第一章 FineBI 介绍 1.1. FineBI 概述 FineBI 是帆软软件有限公司推出的一款商业智能 (Business Intelligence) 产品 。 FineBI 是新一代大数据分析的 BI 工具 , 旨在帮助企业的业务人员充分了解和利用他们的数据 。FineBI 凭借强…

CSS 浮动(Float)及其应用

1. 什么是浮动(Float)? 浮动元素会脱离正常的文档流(Document Flow),并向左或向右移动,直到碰到父元素的边缘或另一个浮动元素。 基本语法 .float-left {float: left; }.float-right {float:…

二分算法的介绍简单易懂

目录 1.概论 2.朴素的二分算法 3.求左端点的二分算法和求右端点的二分算法 4.总结 1.概论 要想了解什么是二分算法,我们就要知道什么是二分算法,二分算法是根据数组的规律,每次查找的数据原来的效率可能要O(n),而我…

ROS2学习(3)------架构概述

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 ROS版本:2 ROS 2(Robot Operating System 2)的设计旨在提供一个灵活、可扩展且高效的框架,用于编写复杂的机器人软件。它引入了发布者/订阅者&…

墨水屏显示模拟器程序解读

程序如下&#xff1a;出处https://github.com/tsl0922/EPD-nRF5?tabreadme-ov-file // GUI emulator for Windows // This code is a simple Windows GUI application that emulates the display of an e-paper device. #include <windows.h> #include <stdint.h>…

【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer

【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer spring-kafka官方文档: https://docs.spring.io/spring-kafka/docs/2.8.10/reference/pdf/spring-kafka-reference.pdf KafkaTemplate API: https://docs.spring.io/spring-kafka/api/org/springframe…

【言语理解】逻辑填空之逻辑对应11

front&#xff1a;词义辨析 11.1前后解释对应 填空的词汇大意可能是吖要结合实际情况不要一味高估导致适得其反的结果 未雨绸缪&#xff1a;趁着天没下雨&#xff0c;先修缮房屋门窗。比喻事先做好准备工作&#xff0c;预防意外的事发生。&#xff08;提前做好准备&#xff0c…

ubuntu上 opencv + eclipse + C++

ubuntu上 opencv eclipse C 1. 安装eclipse 安装eclipse不用说了&#xff0c;前置条件要安装java 配置快捷键方式 2. 新建c项目 配置opencv环境 project -> properties: 配置c标准库版本&#xff1a; 配置opencv头文件&#xff1a; 配置opencv库文件&#xff1a;…

动态内存管理2+柔性数组

一、动态内存经典笔试题分析 分析错误并改正 题目1 void GetMemory(char *p) {p (char *)malloc(100); } void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); } int main() {Test();return 0; }错误的原因&#xff1a; …

AI写PPT可以用吗?我测试了3款AI写PPT工具,分享感受

上周五临下班&#xff0c;领导突然让我周末赶出一份季度营销报告 PPT&#xff0c;还要求周一晨会展示。看着空荡荡的 PPT 页面&#xff0c;我满心都是绝望 —— 周末不仅泡汤&#xff0c;搞不好还得熬夜到凌晨。好在同部门的前辈给我推荐了几款 AI 写 PPT 工具&#xff0c;没想…

PrimeVul论文解读-如何构建高质量漏洞标签与数据集

目录 1. 引入2. 现有漏洞识别方案的不足2.1 数据集中label不准2.2 数据重复2.3 测评标准不够好 3. 现有漏洞识别数据集分析3.1 关于现有数据集中label的准确率分析3.2 关于现有数据集中数据泄露&#xff08; Data Leakage&#xff09;情况分析 4. 漏洞识别测评5. PrimeVul数据集…

关于数据湖和数据仓的一些概念

一、前言 随着各行业数字化发展的深化,数据资产和数据价值已越来越被深入企业重要发展的战略重心,海量数据已成为多数企业生产实际面临的重要问题,无论存储容量还是成本,可靠性都成为考验企业数据治理的考验。本文来看下海量数据存储的数据湖和数据仓,数据仓库和数据湖,…

linux-----------------库制作与原理(下)

1.ELF文件 要理解编译链链接的细节&#xff0c;我们不得不了解⼀下ELF⽂件。其实有以下四种⽂件其实都是ELF⽂件&#xff1a; • 可重定位⽂件&#xff08;Relocatable File &#xff09; &#xff1a;即 xxx.o ⽂件。包含适合于与其他⽬标⽂件链接来创 建可执⾏⽂件或者共享…

python-爬虫基础

爬虫本质&#xff1a;通过编写程序来获取到互联网上的资源。 我们的程序本质上就是模拟浏览器 一个简单的小爬虫&#xff1a; 只需要三步&#xff1a; from urllib.request import urlopen #url是网址&#xff0c;request意思是请求 这里跑出来的中文是这样的注意看&#…

单元化架构

目录 ​​​​​​​​编辑 单元化 逻辑单元 单元化 多地多机房部署&#xff0c;是互联网系统的必然发展方向&#xff0c;一个系统要走到这一步&#xff0c;也就必然要解决上面提到的问题&#xff1a;流量调配、数据拆分、延时等。业界有很多技术方案可以用来解决这些问题&…

【免杀】C2免杀技术(五)动态API

一、什么是动态API 在C2免杀领域中&#xff0c;“动态API” 主要指的是绕过静态检测的一种技术手段&#xff0c;其本质是运行时动态解析和调用Windows API函数&#xff0c;而不是在程序编译阶段就明确引用这些API。这种方式可以有效躲避静态分析工具和杀软的签名识别。 为什么…

Python爬虫实战:研究JavaScript压缩方法实现逆向解密

一、引言 在数字化信息爆炸的时代,网络数据已成为驱动各行业发展的核心资产。Python 凭借其丰富的库生态和简洁的语法,成为网络爬虫开发的首选语言。然而,随着互联网安全防护机制的不断升级,网站普遍采用 JavaScript 压缩与混淆技术保护其核心逻辑和数据传输,这使得传统爬…

HTTP 请求走私(HTTP Request Smuggling)

HTTP 请求走私&#xff08;HTTP Request Smuggling&#xff09;是一种通过利用前端代理&#xff08;如负载均衡器、CDN&#xff09;和后端服务器在 解析 HTTP 请求时存在不一致性 的漏洞&#xff0c;从而实现 注入恶意请求 的攻击技术。 一、基本原理 HTTP 请求走私主要依赖两…