🎉 最新版本 v1.0.9 · 支持动画 HEIC 序列帧

让 HEIC 图片
在浏览器直接显示

一款免费开源的 Chrome 扩展,自动识别页面中的 HEIC / HEIF 图片并实时转换—— 零配置、本地处理、完全保护隐私。

🔒 完全本地转换 · 不上传数据 ⚡ 支持 HEIC / HEIF / 动画序列帧 🌐 适配所有网站 📦 开源 · MIT 协议

50MB
最大文件支持
6
支持的 HEIC 品牌
24fps
动画序列帧播放
0
数据上传到服务器

✨ 核心特性

从自动检测到动画支持,覆盖所有 HEIC 使用场景

🔍

自动检测与转换

页面加载后自动扫描所有 .heic / .heif 图片, 以及动态注入的图片(MutationObserver)。

🎞️

动画 HEIC 序列帧

自动识别 HEIC 动画序列(品牌 msf1 / hevc / hevx), 在页面中以 Canvas 动画形式播放,24fps 流畅显示。

🔮

魔法字节格式验证

通过读取文件头 ISO BMFF 品牌(字节 8-12)精确判断 HEIC/HEIF 格式, 即使服务器未返回正确 MIME 类型也能正确处理。

智能缓存 · 零重复转换

转换结果缓存到 Blob URL,相同图片只处理一次; 并发去重确保同一元素不会被重复转换。

🛡️

完全本地 · 零隐私风险

所有转换均在浏览器本地完成(基于 libheif WebAssembly), 图片数据不会离开你的设备。

🔧

CSP 兼容 · 适配所有网站

使用 heic-to/csp 变体, 完全符合 Manifest V3 的内容安全策略,在严格 CSP 网站上也能正常工作。

🚀 工作原理

三步让 HEIC 在你的浏览器中无缝显示

📦
1

安装扩展

在 Chrome 应用商店一键安装,无需任何配置

🌐
2

正常浏览

访问任何含 HEIC 图片的网页,扩展自动在后台运行

🖼️
3

即时显示

HEIC 图片自动转换为 PNG,在原位无缝展示

⚙️ 内部转换流程

网页中的 <img> fetch(src) 魔法字节验证 libheif WebAssembly 解码 Blob URL 替换 src ✓

动画 HEIC 序列会额外经过 heic-decode.all() 帧解码,并渲染到 <canvas> 动画

🎬 实时演示

下方图片为真实 HEIC 文件。安装扩展后,它们会自动转换并正常显示。

⏳ 正在检测扩展状态...
标准 HEIC 图片 加载中…

标准 HEIC

example.heic · 1.1 MB

大文件性能测试
Nokia 标准测试文件 加载中…

Nokia 标准文件

small-test.heic · 873 KB

标准格式兼容
小文件快速转换 加载中…

小文件快速转换

medium-test.heic · 219 KB

⚡ 极速处理
错误处理测试 加载中…

错误处理

corrupted-test.heic · 78 B

优雅降级演示

🔄 动态加载测试

测试扩展对 JavaScript 动态注入图片的监听处理能力(MutationObserver):

0
成功转换
0
转换失败
0
总计处理

📦 安装指南

两种方式,任选其一

推荐
🌟

Chrome 应用商店安装

  1. 1 访问 Chrome 应用商店页面
  2. 2 点击 添加至 Chrome 按钮
  3. 3 在弹出对话框中点击确认,即可立即使用
前往 Chrome 应用商店 →
🛠️

开发者手动安装

  1. 1

    克隆项目并安装依赖

    git clone https://github.com/vingeraycn/view-heic-browser-extension.git
    cd view-heic-browser-extension
    pnpm install
  2. 2

    构建扩展

    pnpm build
  3. 3 chrome://extensions/ 中开启开发者模式,加载 .output/chrome-mv3 目录

🔧 技术栈 & 架构

🏗️
WXT Framework
现代浏览器扩展开发框架,基于 Vite 5
🔷
TypeScript 5.5
完整类型安全,严格模式,可维护性高
🖼️
heic-to 1.2.1
基于 libheif 1.20.1,支持 CSP 变体
🧩
heic-decode 2.1
多帧解码,驱动动画 HEIC 序列播放

📁 项目结构

view-heic-browser-extension/
├── entrypoints/
│   ├── content.ts           ← 内容脚本,DOM 扫描与 MutationObserver
│   └── background.ts        ← Service Worker 后台脚本
├── utils/
│   ├── heic-converter.ts    ← 核心转换引擎(单帧 + 动画序列)
│   ├── constants.ts         ← 配置常量(SELECTORS、CONFIG、ANIMATION_FPS…)
│   └── types.ts             ← TypeScript 类型定义
└── docs/                    ← GitHub Pages 官网(本页面)

❓ 常见问题

安装后图片还是无法显示,怎么办?
请确认:① 扩展已启用(chrome://extensions/ 查看); ② 刷新页面;③ 打开 F12 控制台查看是否有转换相关日志(🖼️ View HEIC Extension Loaded)。 如果控制台出现 CORS 错误,点击报错图片可在新标签页中直接查看原图。
图片会被上传到云端吗?
完全不会。 所有转换均在你的浏览器本地完成, 使用 WebAssembly 版本的 libheif 引擎在内存中解码, 转换后的图片以 Blob URL 的形式存在于当前标签页内存中,页面关闭即释放。
支持 Firefox 吗?
项目使用 WXT 框架构建,代码兼容 Firefox Manifest V2/V3。 可通过 pnpm build:firefox 构建 Firefox 版本并手动安装。 Chrome Web Store 版本仅面向 Chromium 浏览器。
最大支持多大的 HEIC 文件?
默认上限为 50 MB,超出会给出友好提示。 此限制可在 utils/constants.tsCONFIG.MAX_FILE_SIZE 中修改后重新构建。
什么是动画 HEIC?扩展如何处理?
HEIC 容器支持多帧图片序列(类似 GIF),其 ISO BMFF 品牌为 msf1hevchevx。扩展检测到这类文件后, 会用 heic-decode.all() 解码所有帧, 然后用 <canvas> 在原位播放约 24fps 的动画。 若解码失败,会自动回退显示第一帧的静态图。

立即体验 View HEIC

免费安装,一键告别 HEIC 图片无法显示的烦恼