当前位置: 首页 > news >正文

PicFlow:一个图片处理与上传工作流工具(图床上传工具)

在这里插入图片描述

自从学习搭建网站以来,我就把很多图片托管在七牛云等图床平台上。以前总是通过网页批量上传,需要登录并一步步跳转网页操作,久而久之就厌烦了,于是花了一天时间用 Python 写了一个工具 —— PicFlow,从名字可以看出,它集成了图片处理(裁剪、压缩)和上传到云存储平台(如七牛云)等功能,满足我目前的使用需求。并且它是基于 Python 开发的,可以在 Windows、Linux 和 macOS 系统上运行。

当然,由于时间仓促,功能还不是很多,未来会逐步增加。如果你也有类似的需求,欢迎你安装使用,我已经把它发布到 PyPI,一行命令就可以开始使用啦!

pip install picflow

同时,PicFlow 也是开源的,采用 MIT 许可证发布,十分欢迎你为本项目提 Issue 和 PR!😘

GitHub 地址:https://github.com/luhuadong/picflow

功能特性

🛠️ 核心功能

  • 图片处理
    • 缩放、格式转换(JPEG/PNG/WebP)
    • 质量压缩
  • 云存储集成
    • 支持七牛云(Qiniu)、AWS S3(计划中)
    • 自动生成 CDN 访问链接
  • 批量操作
    • 递归处理文件夹内所有图片
    • 并行任务加速

🚀 效率提升

  • 配置文件驱动:通过 YAML 文件管理云存储密钥和处理参数
  • 跨平台:无需修改代码,同一命令在 Windows/Linux/macOS 运行

快速开始

配置七牛云

执行如下命令创建配置文件 ~/.picflow/config.yaml

picflow config init

你将通过交互方式输入 ACCESS_KEYSECRET_KEY 等信息,配置文件内容如下。

storage:
  qiniu:
    access_key: "YOUR_ACCESS_KEY"
    secret_key: "YOUR_SECRET_KEY"
    bucket: "YOUR_BUCKET_NAME"
    domain: "https://cdn.example.com"  # CDN 域名

处理图片

# 压缩为 WebP 并上传
picflow process --format webp --quality 85 ~/images/photo.jpg

# 递归处理整个文件夹
picflow batch ~/gallery --scale 50% --output ~/compressed_gallery

上传图片

# 直接上传图片
picflow upload ~/images/photo.jpg

# 强制上传图片(覆盖图床中同名文件)
picflow upload ~/images/photo.jpg --force

# 同时上传多张图片
picflow upload test.jpg test2.jpg test3.jpg

# 先处理后上传图片
picflow process --scale 256 --format webp --quality 85 test.jpg

其他命令行参数

# 查看帮助
picflow --help

# 打印版本信息
picflow --version

# 查看图片详情
picflow info ~/images/photo.jpg

高级配置

自定义处理参数

你可以根据使用偏好修改 ~/.picflow/config.yaml 配置文件中的参数,例如 default_quality 默认质量参数:

processing:
  default_quality: 90
  formats:
    webp:
      method: 6  # 压缩算法级别
    jpeg:
      progressive: true  # 渐进式 JPEG

在调用 picflow 命令时,如果没有指定参数,则会使用该文件中的默认参数。如果你指定了选项参数,则会覆盖配置中的参数。例如执行下面命令,最终采用的质量参数是 75,而不是默认的 90。

picflow process input.png --quality 75 --format jpeg

未来计划

经过一天的高强度开发,目前 PicFlow 工具已经满足我的使用需求,但作为一个开源软件,还远远不够。接下来会逐步增加一些功能,例如支持更多的图床、支持更多的图片文件格式等等。同时,目前代码还有点冗余,还需要进一步优化,提高代码质量。

当然啦,本着“以终为始,为我所用”的原则,在 PicFlow 已经满足我个人的使用之后,它的开发优先级可能就没那么高了。所以你的 Star、Issue 和 PR 就显得特别重要了!⭐

相关文章:

  • Debian12生产环境配置笔记
  • systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 笔记250322
  • SOFABoot-10-聊一聊 sofatboot 的十个问题
  • QEMU 引导时分离内核和文件系统
  • Collectors.toList / list 转 list
  • Netty——BIO、NIO 与 Netty
  • 第十六章:Specialization and Overloading_《C++ Templates》notes
  • ‌App Store美学竞争:如何通过广告素材分析实现ASO弯道超车‌
  • 基于Spring Boot 的在线教育系统(源码+lw+部署文档+讲解),源码可白嫖!
  • PRODIGY: “不折腾人”的蛋白-蛋白/蛋白-小分子结合能计算工具
  • SEO长尾关键词精准布局
  • 为什么后端路由需要携带 /api 作为前缀?前端如何设置基础路径 /api?
  • 批量图片压缩工具,高效减小文件大小并保持质量
  • deepSeek-SSE流式推送数据
  • OAuth 2.0认证
  • UE4学习笔记 FPS游戏制作12 添加第二把枪,制作枪的父类,动态生成物体,切换武器
  • 使用外部事件检测接入 CDH 大数据管理平台告警
  • 能不能解释一下 ,什么是React 的错误边界?
  • K8S学习之基础四十三:k8s中部署elasticsearch
  • hexo+butterfly搭建博客网站总结篇
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • 加拿大温哥华一车辆冲撞人群,造成多人伤亡
  • 机票搜索热度飙升,透过数据看五一假期旅游热度
  • 杨靖︱“一笔糊涂账”:博马舍与美国革命
  • “全国十大考古”揭晓:盘龙城遗址、周原遗址入围
  • 宁波一季度GDP为4420.5亿元,同比增长5.6%