| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 移动开发 -> 我用2天学习(摸鱼)时间教你实战Flutter Deskstop之Tinypng(熊猫图片压缩)GUI工具 -> 正文阅读 |
|
|
[移动开发]我用2天学习(摸鱼)时间教你实战Flutter Deskstop之Tinypng(熊猫图片压缩)GUI工具 |
前言
Tinypng是一个在设计和技术界十分流行的图片压缩网站,但是它只有网页版,没有GUI。幸好的是它支持通过apikey直接运行api接口压缩图片,虽然业内已经有很多版本的GUI,Window,Mac都有,但是这几天学习Flutter Deskstop,正好可以用来实战。目前的版本只打包了macos版本,window版本我有空找个机子再调试下,理论上无需太多改动。 代码过程实现选择文件选择文件这块的实现,由于我本身是做iOS开发的,macOS原生开发其实也大同小异,但是为了兼容多端,我也懒得一个个写插件了,搜了下现成支持deskstop的差距发现file_picker这个插件完美支持我的想法,不管是window,mac,还是linux通通都支持。目前只支持选择jpg,png的文件,貌似webp和h265都是支持的,后期我可以加上。
实现打开目录或者打开网址这块一开始想了很久,iOS端是要通过urlLaunch跳转的,搜了下pub很多现场的库都只支持iOS和安卓对桌面不是很友好。突然灵机一动Swift脚本可以通过Process类直接运行terminal命令,dart是否有相关api支持?如果有的话打开目录 只需要一行命令 open xxx, 打开网址只需要open xxx.com。答案是显而易见的,dart也封装了 Proccess类,代码如下。
实现上传原图文件到Tiny这个没啥好说,看看http规则,直接撸代码即可。
实现下载压缩后图片到自己目录TinyPng上传原图成功而且压缩处理完成后会返回这样一串Json {“input”:{“size”:84736,“type”:“image/webp”},“output”:{“size”:68282,“type”:“image/webp”,“width”:658,“height”:1009,“ratio”:0.8058,“url”:“https://api.tinify.com/output/avxq4rhjha1apfra92pzfnrcj2n0zdbx”}} 里面包含了压缩率,原图size,压缩后size,压缩后输出地址等等。有了这个json我们自然就能构建我们的UI了。
Mac应用权限问题要配置一下这几个权限,不然应用会各种权限报错。
状态管理我用了目前比较流行的Gex状态管理,只需要监听几个属性即可。
用到的三方库
项目地址此项目完全开源,想学习的小伙伴可以去GitHub查看,有帮助到你们的麻烦给个Star哈。此项目基于Flutter 2.2.3开发,理论上是兼容更高的版本。(没有实测) https://github.com/JerryFans/TinyPNG4Flutter 安装包不想编译的可以直接用安装包 dmg安装包 pkg安装包 未来1、window版本打包 |
|
|
| 移动开发 最新文章 |
| Vue3装载axios和element-ui |
| android adb cmd |
| 【xcode】Xcode常用快捷键与技巧 |
| Android开发中的线程池使用 |
| Java 和 Android 的 Base64 |
| Android 测试文字编码格式 |
| 微信小程序支付 |
| 安卓权限记录 |
| 知乎之自动养号 |
| 【Android Jetpack】DataStore |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 3:33:20- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |