我做了一个 AI to PNG 在线工具:文件不上传服务器,直接在浏览器里转

0 阅读6分钟

我做了一个 AI to PNG 在线工具:文件不上传服务器,直接在浏览器里转

这两天我给自己的工具站 ToolKnit 新增了一个小功能:AI to PNG

ScreenShot_2026-05-19_234013_483.png

ScreenShot_2026-05-19_233944_599.png 它解决的问题很直接:
有时候我们手里拿到的是 .ai 文件,但真正想要的只是一个能直接预览、分享、继续处理的 PNG 图片。尤其是做运营图、社媒图、简单物料处理的时候,很多人并不想专门打开一整套设计软件,只是想先把它导出来看看。

所以我就做了这个工具:

AI to PNG
地址:https://toolknit.com/tools/ai-to-png.html

为什么想做这个功能?

我一直比较喜欢做“打开就能用”的小工具。

很多在线转换站的问题,不是功能不够,而是流程太重:

  • 要上传到服务器
  • 要等转码
  • 要排队
  • 有些甚至还要登录
  • 处理设计源文件时,隐私上也会让人有点不放心

所以我这次还是延续 ToolKnit 一贯的思路:
尽量在浏览器里完成处理,不把文件传到服务器。

对用户来说,这种体验会简单很多:

  • 打开网页
  • 选择 .ai 文件
  • 预览
  • 导出 PNG

没有中间环节,没有额外负担。

AI 文件转 PNG,难点在哪里?

一开始看上去,好像只是“格式转换”四个字。
但真正做的时候,会发现这里面并不只是改个后缀名那么简单。

.ai 文件本质上并不是专门为浏览器设计的格式。
浏览器原生也没有“直接打开 AI 文件然后渲染”的能力。

所以这个功能真正的核心,不是“下载一个转换器”,而是:

怎么在浏览器里把 AI 文件内容解析出来,并正确渲染成位图。

这一步如果做不好,后面导出的 PNG 质量、尺寸、透明背景、预览一致性都会出问题。

我这次的实现思路

这版 AI to PNG 的思路,核心是这几个部分:

1. 利用浏览器端可处理的渲染链路

很多 AI 文件本身兼容 PDF 渲染思路,所以可以借助 PDF.js 在前端完成页面解析和绘制。

简单来说就是:

  • 读取用户本地选择的 AI 文件
  • 在浏览器里解析可渲染内容
  • 把内容绘制到 Canvas
  • 再从 Canvas 导出 PNG

这样整条链路都发生在本地浏览器里。

2. 用 Canvas 做最终位图输出

渲染完之后,真正导出 PNG 的动作还是交给 Canvas

这一步的好处是:

  • 可以控制导出尺寸
  • 可以处理透明背景
  • 可以保证最终拿到的是浏览器友好的 PNG 图片
  • 也方便后续继续接其他图片处理能力

比如你把 AI 转成 PNG 之后,还可以继续去做背景处理、裁剪、压缩之类的操作。

3. 用 IndexedDB 记录本地历史

我自己做工具时有一个习惯:
只要对用户有帮助,而且不影响轻量体验,就尽量保留一点“本地记忆”。

所以这类工具我会把一些历史记录存在浏览器本地,比如最近处理过的内容、最近导出的结果等。这样即使你不小心刷新了页面,也不会一下子全丢。

这里用的是 IndexedDB,不需要账号系统,也不需要后端数据库。

4. 用 JSZip 做批量打包能力

如果后面用户有连续导出、多文件整理的需求,浏览器里也可以直接做 ZIP 打包。

这类能力我越来越喜欢,因为它能让“在线工具”这件事,不只是一个单点按钮,而是变成一条完整的小工作流。

为什么我比较坚持“浏览器本地处理”?

这可能是我这段时间做工具最在意的一件事。

因为很多人以为“在线工具”天然就等于“上传到服务器处理”。
但其实前端这几年能力已经很强了,很多事情完全可以在本地完成。

本地处理的优点很明显:

  • 隐私更好:文件不离开设备
  • 速度更直接:省掉上传和服务端排队
  • 成本更可控:不需要为每次处理都承担服务器计算成本
  • 体验更轻:用户打开就能开始用

当然,它也有边界。

浏览器不是万能的,特别大的文件、特别复杂的格式、特别重的计算任务,仍然会受到设备性能限制。
所以做这种工具,本质上不是“什么都塞进前端”,而是判断:

哪些事情适合本地做,哪些事情不适合。

在我看来,像 AI to PNG 这种偏预览和导出型的需求,就很适合优先往浏览器端走。

这个工具还有一个我自己很喜欢的搭配用法

这次做完 AI to PNG 之后,我自己第一反应不是“终于又多了一个转换器”。

而是:

它可以和背景抹除功能串起来用了。

流程会变成:

  • 先把 AI 文件转成 PNG
  • 再把 PNG 丢进背景抹除工具
  • 最后得到更适合做电商图、头像图、展示图的透明图

这个组合在很多轻量场景里还挺实用的。

也就是说,它不是一个孤立的小工具,而是可以接进整个图片处理链路里的一个节点。

做这种工具时,我越来越在意什么?

不是“功能看起来多厉害”,而是:

  • 用户第一次打开能不能马上理解
  • 操作路径是不是够短
  • 文件是不是安全
  • 页面是不是轻
  • 功能之间能不能形成组合

我越来越觉得,一个工具站如果只是“页面很多”,其实意义没那么大。
真正重要的是每个工具之间有没有连贯性,有没有工作流价值。

最近的一点开发感受

今天是中国时间 5 月 19 日。
前几天一直在下雨,不过这几天心情还不错,所以虽然更新频率稍微慢了一点,但还是抽时间把这个功能做出来了。

而且今天对我来说还有一件挺重要的事:
我的另一个站 24picture.com 也上线了。

那个站最开始是想做 AI 生图方向的内容,后面也在想,做成一个更聚焦图像能力的工具站其实也挺有意思。
它会和 ToolKnit 一样继续更新,只是方向会更偏图像类功能。

对我来说,这算是最近一个很开心的小里程碑。

最后

如果你也刚好有 .ai 文件想快速转成 PNG,可以试试我刚做的这个工具:

https://toolknit.com/tools/ai-to-png.html

如果你对“浏览器本地处理文件”这类方向也感兴趣,也欢迎交流。
我最近会继续把这条路线往下做,尽量把更多常见但麻烦的小需求,做成真正打开就能用的工具。

如果这篇文章有点意思,欢迎点个赞或者聊聊你平时最常遇到、但又最烦的文件处理需求。

ScreenShot_2026-05-19_234056_530.png