最近重构了我的个人项目图小小( Pic Smaller ),无论是技术上还是 UI 上都进行了重构,改动巨大,这次我决定完全开源它( Github 地址在文末)。因为之前跑了一年几乎无人问津,它一直是一个完全免费项目,没有广告,没有打赏,甚至联系方式都没有,做成这个样子属实让人很不甘,所以干脆完全开源算了,希望能吸引一些关注,先看看新版本预览效果:
图小小是一个图片压缩工具,基于 Vite+React 技术栈开发,它可以完全取代类似 TinyPNG 之类的在线图片压缩工具,且压缩之后视觉表现效果往往更好。但图小小有个更大的优势:通过图小小进行图片压缩完全是基于浏览器本地的,没有任何服务端交互,图片不会上传到远程服务器,所以非常安全,不用担心隐私图片被泄露。
目前图小小支持 JPEG/PNG/WebP/Gif 四种格式的图片压缩,基本上能满足绝大部分日常使用需求,本项目为个人业务时间开发,为了节约时间,采用了大量的第三方开源项目,所以图小小本身是没什么技术含量的,我个人认为图小小优秀在于提供了良好的 UI 和使用体验,虽然是缝合怪,但鲜有人做出类似的产品
简单说一下技术实现,感兴趣的自行研究,不得不感谢 Webassembly 技术的加持,让 PNG/Gif 编解码这类 CPU 密集计算型需求在纯网页端实现成为了现实,并且还有不错的性能表现
为了防止 UI 阻塞,运用了 Web Worker 技术进行编解码和压缩,同时为了防止同一时刻浏览器的内存占用过大(内存占用过大也会导致卡顿),用了一点小技巧在 Worker 端实现了一个简单的队列 Queue,这里不展开,有兴趣的自行研究源码
网站部署在 vercel 上,主要原因是穷,所以初次访问速度会有一定的影响,国内其实大部分地区已经屏蔽了 vercel ,为了让国内用户也能访问,不得已通过 Cloudflare 做别名解析了 txx.cssrefs.com 这个域名。这里要强烈推荐个人开发者采用国外的解决方案,这个网站除了域名(域名是以前在腾讯云买的),其他证书服务器等都是免费的,感谢万恶的资本主义
由于图小小是纯本地执行,因而不同的电脑配置会有不同的压缩表现,实测批量压缩成百上千张图片会有明显的卡顿甚至浏览器崩溃现象。这是正常的,由于没有任何限制,使用本工具可能会导致浏览器耗尽 CPU 和内存资源,所以使用时请自行评估
项目地址:https://github.com/joye61/pic-smaller
![]() | 1 EmbraceQWQ 2024-05-17 00:19:14 +08:00 https://www.toolcat.cloud/ 收录你的,感谢你的付出 |
![]() | 2 sfqtsh 2024-05-17 00:26:05 +08:00 via Android 我的主手机 iPhone 刚好前几天在 app store 里买了个图片压缩的应用,一些拍的好多 M 的图片压缩后小了很多,质量看起来差不多。我觉得这类放在手机上需求更大点更能赚 money 吧 |
![]() | 3 Admstor 2024-05-17 00:33:20 +08:00 ![]() 1 使用 web 工具的用户往往不是隐私敏感型,你的纯浏览器处理模式与同类产品并无明显优势 2 界面复杂明显并没有做到简单易用。从用户角度看,当我需要用压缩的时候,往往是要么体积或者分辨率的限制,所以其实对这些用户,他们需要的是,我上传一个照片,你返回一个符合我要求的压缩后照片,而不是让我选所谓的压缩率等等参数 3 批量处理用户会选择更专业的软件,而不是选择 web 工具 4 你这个东西更适合作为某个比较大型的 web 项目,其中一个组件,指望赚钱或者广告流量,你除非做个站点,全都是类似的 web 工具库,才有可能。但是说实在的,竞争压力依然巨大,同样市场极小。 |
![]() | 4 lizhenda 2024-05-17 00:37:33 +08:00 确实很难商业化 |
![]() | 5 joye OP ![]() @Admstor 感谢建议,说的很对。我会抽时间优化功能,采纳你的建议,我今年 37 岁了,公司面临倒闭,马上要离开职场了,只想让自己以后能留下一点技术的回忆,这个工具太小,永远不为赚钱,只为有人使用,有人记得就足够 |
![]() | 6 wakarimasen 2024-05-17 00:44:44 +08:00 via Android 如果流量达标了,光贴广告应该是能赚到钱的,进阶一点的话还可以搞社区和云存储等增值服务。 不过第三方库为什么是以二进制加入到版本控制里的方式来管理? |
8 osilinka 2024-05-17 00:52:10 +08:00 推广不好吧, 记得一个人在 reddit 的 sideproject 推广类似的,一个月有几百美元的收入 |
9 MaizerShuahu 2024-05-17 02:25:58 +08:00 via Android 我经常有需求需要使用网站压缩图片,目前你做的网站对我来讲有一些体验上的问题 1.一打开就要上传图片,不能进行我想要的质量设置 2.一般我找网站压缩,都是求保质的,也就是说我期望压缩的更小,而质量可以接近原图,否则我用 ps 也可以搞定,而我使用了之后发现质量变化太大,无法达到预期 |
![]() | 10 syozzz 2024-05-17 02:54:47 +08:00 感觉很像这个 https://squoosh.app/ |
![]() | 11 xhawk 2024-05-17 03:02:00 +08:00 via Android 我最近有个跟这个相关的需求场景跟你分享,电商里头的图片管理,要解决 2 个问题,图片的存储管理,图片的打标签分类,你这属于高级功能,需要能对图片做基础编辑,因为亚马逊会对图片严格审核,需要能对图片的信息重新组织。 |
12 TuTouPower 2024-05-17 04:01:13 +08:00 @xhawk 可以联系,RmVpS2FpNjgyMw== |
13 wlf92 2024-05-17 06:59:07 +08:00 有个产品叫 PP 鸭,我愿意付费,因为只要把文件夹拖进去就会遍历所有图片进行压缩了。 题主可以借鉴一下他的设计和商业模式。 |
![]() | 14 BeijingBaby 2024-05-17 07:11:04 +08:00 挺好的,可自定义压缩率 |
![]() | 15 MillaMaxwell 2024-05-17 07:35:22 +08:00 试用一下,感觉如果我想处理大量图片还是不够方便 |
16 jisuowei 2024-05-17 07:55:51 +08:00 ![]() 这就不得不提到以前公司做的 https://tuya.xinxiao.tech/ |
![]() | 17 InsideSeed 2024-05-17 08:03:04 +08:00 已 star 支持 |
18 sundev 2024-0-17 08:16:10 +08:00 star 支持 |
![]() | 19 abccccabc 2024-05-17 08:22:23 +08:00 兄弟,能不能 build 一个,我是做后端的,对压缩也挺感兴趣的。 再去学一遍前端,可能性不大。 |
![]() | 20 zhuang0718 2024-05-17 08:23:20 +08:00 为开源点个赞~ |
![]() | 21 027creed 2024-05-17 08:31:54 +08:00 star 支持 |
![]() | 22 googlehub 2024-05-17 08:38:03 +08:00 已 star ,感谢楼主的开源,看着挺不错的,还可以有更多优化的空间,慢慢打磨下,更专业体验更好的方向试试呢。 |
![]() | 23 zhangyl 2024-05-17 08:40:18 +08:00 star 支持 |
![]() | 24 SunsetShimmer 2024-05-17 08:40:27 +08:00 @abccccabc 用 Vercel 部署一下就可以吧,前端好像一般没有发布 build 的习惯 |
![]() | 25 daimao 2024-05-17 08:43:53 +08:00 不是 哥们 你这网站打开了连个功能介绍都没有 谁知道是干嘛的啊 |
26 DefoliationM 2024-05-17 08:47:43 +08:00 via Android 这种简单的东西其实很多都是自己写着玩玩,感觉很难火起来。 |
![]() | 27 c330 2024-05-17 08:57:04 +08:00 |
![]() | 28 jellyX 2024-05-17 08:57:23 +08:00 大佬加油 |
29 ttyhtg 2024-05-17 08:59:35 +08:00 via Android 加油 |
![]() | 31 moreant 2024-05-17 09:04:45 +08:00 支持批量真不错,之前都是用 squoosh.app ,只能一张一张压缩有点烦 |
![]() | 32 iorilu 2024-05-17 09:05:34 +08:00 我也有个站点在 vercel , 能说说看怎么用 Cloudflare 加速国内访问吗 |
![]() | 33 theprimone 2024-05-17 09:14:21 +08:00 好奇 OffscreenCanvas 怎么实现 JPEG/WebP 的压缩的,找个算法重绘 Canvas 再导出? |
![]() | 34 seedhk 2024-05-17 09:14:47 +08:00 已 star ,感谢楼主的开源 |
![]() | 36 abccccabc 2024-05-17 09:24:00 +08:00 @me1onsoda @SunsetShimmer 隔行如隔山呀,我主要写 php 的,不写前端 JS 。说实话,vue 都看得我一 meng 一 meng 的,现在又冒出一个 Vercel ,又是 react ,又是编译。 算了,不扯了,不玩了。 |
![]() | 37 walkingmoonwell 2024-05-17 09:27:19 +08:00 这样部署的话,那你这个域名是不是就不用备案了 |
38 huihushijie1996 2024-05-17 09:27:31 +08:00 |
![]() | 40 skyworker 2024-05-17 09:33:09 +08:00 正好需要在内网部署一个类似的工具, OP 可以放 buy me coffee 的二维码, 我愿意赞助 |
41 zealotxxxx 2024-05-17 09:34:40 +08:00 压缩率很不错啊,而且看着很可以。 不过产品对于有需求的轻量用户来说,还是偏复杂了。 收藏了,这个挺好用的。比 tiny 还好点。 |
42 dylan593 2024-05-17 09:34:52 +08:00 ![]() 看了一下该站点的域名是 19 年就开始使用的,下面是我作为 PM 给楼主一些优化建议: 1. 简化用户操作步骤,让用户以上传图片等待压缩下载图片的工作流进行体验(可通过自行测试设置一个默认参数,保证压缩体积与图片质量的平衡); 2. 优化板块布局,上传页面还可以,下载页面的下载按钮应突出展示,另外压缩的比例以及具体数值可以在下载按钮上方进行展示; 3. SEO 优化,你的标题、元描述、关键词等内容都存在优化空间,另外爬虫文件也没设置,这样对于自然流量的获取会很吃亏; 4. 营收点:通过数据分析了解用户上传图片的主要体积大小范围,设置分级收费制度,如 50M 以上的图片上传处理需要收费; 以上是个人看完你的网站后的一些思路,希望对你有帮助。 |
43 giyear 2024-05-17 09:35:29 +08:00 压缩图片绝大部分目的就是为了传播吧,你这个巨大的隐私优势完全无用武之地…… |
![]() | 44 AmaQuinton 2024-05-17 09:35:46 +08:00 op 有没有考虑通过 url 方式获取图像文件,例如 B 站的壁纸 |
![]() | 45 rlds 2024-05-17 09:37:45 +08:00 挺好的,支持!!! |
![]() | 46 rookie2luochao 2024-05-17 09:37:55 +08:00 害,我也重复造了个新 swagger-ui 的轮子, 也是无人问津,还好我的 UI 设计和使用体验和其他竞争者大部分不一样,不然我真的好像是抄袭了,至少我没出圈我也不至于被吐槽吧,其实早就完成了 60%,但是没有设计成通用的开源包,我要是早 2 年放出来估计好很多,我给 swagger-ui 也成立了一个组织用于收录 所有后端语言的 swagger-ui, 链接在下面 核心 UI 包: https://github.com/rookie-luochao/openapi-ui 后端 swagger-ui 中间件: https://github.com/openapi-ui |
![]() | 47 skyworker 2024-05-17 09:38:21 +08:00 @giyear 为了传播的用户, 一般不会付钱 比如商业用户, 需要保护图片隐私, 不会使用网络工具, 如果能够定制化(比如增加 AI 功能, 符合特定行业对图片处理的需求, 比如自动加用户水印之类), 我觉得商业化不是问题. |
![]() | 48 Xinu 2024-05-17 09:39:21 +08:00 很棒! |
![]() | 49 chf007 2024-05-17 09:44:48 +08:00 squoosh 不香么,同类的还有很多种,这种工具太多了,没有什么特别的优点很难胜出 |
![]() | 50 LowBi 2024-05-17 09:44:54 +08:00 支持 太难了 我想也让濒死/死亡项目开源 留下最后的痕迹 |
51 polobug 2024-05-17 09:46:07 +08:00 另外你这个如果能在小程序 那才能获取流量。 |
![]() | 52 yuyuf 2024-05-17 09:46:29 +08:00 感觉稍微缺少的用户思维。 1 、调整图片尺寸那里。适应宽度,适应高度、这些词,普通用户大概率是不知道什么意思的。 2 、图片质量那里。可以就给几个选项就行了, 等等,下面的那些参数,普通用户也基本都不知道是什么意思的。可以都设置为默认,隐藏起来。给个高级选项按钮,给专业人用。普通用户就用默认的就好了 |
53 cndenis 2024-05-17 09:54:24 +08:00 现在产品太难, 别说免费, 贴钱给用户人家都不见得会肯用. 靠技术和功能来吸引用户真要做得非常独到才行 这几年我在桌面上使用的新工具软件, 每年可能就一两个而已 |
55 Grefer 2024-05-17 10:15:24 +08:00 star 支持一下,加油 |
![]() | 57 joye OP @walkingmoonwell 是的 |
58 insignificance 2024-05-17 10:24:47 +08:00 给你点个赞 |
![]() | 59 joye OP @AmaQuinton 当前技术无法实现,由于采用的 Vite ,它是一个非常纯粹的前端 SPA 项目,在技术上会存在 [跨域和画布污染]( https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image) 的问题,因为前面有人提到 SEO ,所以等有时间我会考虑用 nextjs 实现,就可以做到通过 URL 获取图像文件,但本质上是借助于服务器实现 |
60 realJamespond 2024-05-17 10:37:56 +08:00 感觉可以考虑用 electron ,或 wails 实现,压图更多可能是要批量运行所以结果要实时写回本地 |
![]() | 61 QKgf555H87Fp0cth 2024-05-17 10:45:17 +08:00 有 bug ,我还是选择 tinypng |
62 sojson 2024-05-17 10:53:20 +08:00 ....要我拿吗,我拿必火 |
![]() | 63 yzding 2024-05-17 10:54:22 +08:00 在压类似 10kb 左右小图片的的时候,画质会变糊,压缩后的图片体积会增大 |
![]() | 66 nuffin 2024-05-17 11:16:43 +08:00 已 star |
![]() | 67 IJustmaogepao 2024-05-17 11:18:28 +08:00 点赞,已 star |
![]() | 68 cloudzhou 2024-05-17 11:26:20 +08:00 @joye 这段很感慨,没想到互联网都变老人了 --- 感谢建议,说的很对。我会抽时间优化功能,采纳你的建议,我今年 37 岁了,公司面临倒闭,马上要离开职场了,只想让自己以后能留下一点技术的回忆,这个工具太小,永远不为赚钱,只为有人使用,有人记得就足够 |
69 iniko 2024-05-17 11:30:53 +08:00 点赞,已 star |
![]() | 70 server 2024-05-17 11:34:51 +08:00 star, 加油 |
71 brookegas 2024-05-17 11:42:55 +08:00 看了这个帖文,有点兔死狐悲的感觉 码农成了跟维修工、木工、水电工类似的手工匠人 程序员改变世界的时代已经过去了 |
![]() | 72 linyongxin 2024-05-17 11:47:48 +08:00 支持一下,这种桌面软件很多,我用的是洋芋田,好多年了。现在图片处理比较热门的就是 ai 抠图 |
![]() | 73 FakerLeung 2024-05-17 11:47:59 +08:00 试用了一下,手机拍摄的图片压缩还可以,但是用了一张夜景图压缩,居然把灯给我压没了。。。再试了一张 gif ,那效果只能用惨不忍睹来形容。所有参数配置均为默认未调整 |
74 chenzw2 2024-05-17 11:48:55 +08:00 https://online.bqrdh.com/image/compress 以前做过一个,楼主的更棒 |
![]() | 75 guanguans 2024-05-17 11:49:07 +08:00 看到 37 岁自我感叹,破防了。已 star ,收录到 https://github.com/guanguans/favorite-link 中了。不过好像有点 bug 。  |
![]() | 76 zzbd 2024-05-17 11:57:15 +08:00 需求确实挺大,现在手机拍的图都太大了,再加几个小功能可能会更好,增加文字层,增加图片层(打码用),可以用简单标记。现在 edge 自带的编辑器用这还算顺手,就是缺一个打码功能。 |
![]() | 77 vimiix 2024-05-17 12:12:11 +08:00 支持,感谢作者开源,已 star ,我做了个 docker 镜像,供搭建体验( Dockerfile 已提 PR ) docker pull vimiix/pic-smaller |
78 MzM2ODkx 2024-05-17 12:23:53 +08:00 已 star ,还没看源码。好奇,新大小/压缩率是预测值还是选择完就进行压缩操作? |
![]() | 79 Tyrant1984 2024-05-17 12:34:12 +08:00 已 star ,之前一直用的是 pingo ,虽然超级方便但是它不支持 gif 压缩,官方说仅针对 png 图片开发,但实测 jpg 也行~~ |
![]() | 80 allenby 2024-05-17 12:34:45 +08:00 via Android 已 star |
![]() | 81 wencaiwulue 2024-05-17 12:59:47 +08:00 做开源难哦。做开源已经三年了。https://github.com/wencaiwulue/kubevpn 项目还是起不来。难难。 |
![]() | 82 BQsummer 2024-05-17 13:54:01 +08:00 一直用 squoosh.app 竞品太多了 |
83 lwc645089781 2024-05-17 14:17:36 +08:00 https://squoosh.app/ 的好。up 的网站试了下,改了参数以后就卡住了。 |
![]() | 84 forty 2024-05-17 14:30:24 +08:00 能做 AI 扩图就更好了 |
85 ShaoLongFei 2024-05-17 14:34:30 +08:00 感觉很不错啊 |
86 fushall 2024-05-17 14:40:42 +08:00 楼主好厉害!千万不要放弃热爱的代码,念念不忘必有回想 |
![]() | 87 haikea 2024-05-17 14:44:56 +08:00 支持 op |
88 xz410236056 2024-05-17 14:47:07 +08:00 @sfqtsh 这玩意也能赚钱? 一句代码的事儿啊 image.jpegData(compressionQuality: 0.6) 这个方法基本无损,有损压缩的话就得重绘了 |
![]() | 89 diagnostics 2024-05-17 14:50:23 +08:00 图片对比很不错,UI 可以再优化(已经 80 分)了,默认参数降了色彩很差劲( 1 分),用户更多是拿来即用的,不符合要求再调参数 |
90 xianqin 2024-05-17 15:00:28 +08:00 @diagnostics 同感。颜色数量低到这程度,从非技术型用户角度看就是 BUG 了 |
![]() | 91 R31 2024-05-17 15:06:00 +08:00 支持已 star |
92 zw1one 2024-05-17 15:19:01 +08:00 你做成 app ,或者公众号呀,手机用户对这个需求比较大。 |
![]() | 93 17681880207 2024-05-17 15:23:58 +08:00 ![]() 我一直在用 https://squoosh.app/ 但是图片压缩的需求其实并不是一个高频需求,不论从尤其是使用界面来手动压缩,这种情况真的很偶尔才会碰到。 |
![]() | 94 SunsetShimmer 2024-05-17 15:29:16 +08:00 Star 了,好像没对移动端适配? |
![]() | 95 rj 2024-05-17 15:30:33 +08:00 已 Star |
![]() | 96 Lamlam147 2024-05-17 15:59:14 +08:00 感谢付出 已 star |
![]() | 97 Nich0la5 2024-05-17 16:20:50 +08:00 感谢 哎~这个方向商业化有点难 |
![]() | 98 binge921 2024-05-17 16:36:19 +08:00 感谢付出! |
![]() | 99 rivenqinyy 2024-05-17 16:58:32 +08:00 Star. |
100 mioktiar56 2024-05-17 17:07:16 +08:00 其实我也做了一个图片压缩软件,不过是客户端的,也是无人问津。无人问津我倒不奇怪,毕竟我没推广过,只在 V2EX 上面写了个帖子 https://jiangxueqiao.com/post/2053741240.html |