news 2026/10/1 17:16:49

BPG图片格式完全指南:Windows下查看、转换与缩略图预览实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BPG图片格式完全指南:Windows下查看、转换与缩略图预览实战

1. BPG到底是什么?这个格式为什么值得折腾

先说个真实经历。前阵子一个设计师朋友给我发了张截图,后缀是 .bpg,我习惯性双击,Windows 照片查看器直接弹窗说格式不支持。我当时第一反应是“这什么冷门玩意儿”,后来一查才发现,这格式在压缩效率这个领域,其实已经默默发展了快十年。

BPG,全称是 Better Portable Graphics,中文社区一般叫它“更好的便携图像格式”。它是 2014 年由 FFmpeg 的创始人 Fabrice Bellard 发布的,核心思路非常直接:既然 HEVC(也就是 H.265 视频编码规范)在视频压缩上效果远超老标准,那我干脆把 HEVC 里负责“帧内编码”的那部分提取出来,专门用于压缩静止图片。换句话说,BPG 本质上是用“视频编码的思路”来压缩一张图,但只用了视频编码中的一个环节。

这个思路带来的收益非常直观:在同等画质下,BPG 文件体积大约是 JPEG 的 50% 到 60%。如果拿质量很高的原图来对比,一张 1920x1080 的 JPEG 可能 800KB,同样视觉质量的 BPG 可能只有 400KB 左右。对于大量截图、产品图、摄影素材,这个体积差异意味着节省一大块存储空间,也意味着网页或文档加载速度明显提升。

BPG 还有几个 JPEG 比不了的特性:

  • 支持 Alpha 透明通道,而且无损保留透明度。
  • 支持最多 14 位色深,JPEG 通常只有 8 位。
  • 支持无损压缩模式,压缩率仍然高于 PNG。
  • 支持“BPG 动画”,可以理解成“动图”,体积比 GIF 小得多,画质也更好。
  • 内嵌 ICC 色彩配置文件,色彩管理比 JPEG 更靠谱。

不过,它在日常使用中一直有个无法回避的问题:生态不完善。浏览器厂商纷纷放弃了它的原生支持,手机系统更不用说,连很多专业修图软件也没集成它。所以在 Windows 上,如果你想用 BPG,基本得靠自己搭一套“能看、能转、能预览”的方案。这篇文章要解决的,就是这三件事。

适合谁来参考?首先是设计师、前端开发、素材管理爱好者,他们手里经常攒几千张 PNG/JPG,想压缩又不想损失画质;其次是摄影爱好者,想长期归档原图、缩略图;再就是纯粹对图片技术感兴趣、想在电脑上折腾点新格式的玩家。下面我直接进入正题,先聊查看,再聊转换,最后说 Windows 资源管理器预览方案。

2. 查看 BPG 图:Windows 下靠谱方案盘点

2.1 免费首选:IrfanView + BPG 插件

Windows 上最省事的看图方式是装 IrfanView,这工具是老牌免费看图软件,体积小,启动快,而且插件体系非常完善。BPG 支持不是内置的,需要额外装一个官方插件,叫BPG plugin,在 IrfanView 官网的“Plugins”页面能找到。

安装步骤很简单:

  1. 先装 64 位 IrfanView(注意,软件和插件位数要统一)。
  2. 下载 BPG 插件压缩包,解压后得到bpg.dll或类似文件。
  3. 把插件文件放进 IrfanView 的Plugins目录,然后重启软件。
  4. 打开一张 .bpg 文件测试,应该能正常显示。

IrfanView 本身不自动关联所有文件后缀,你第一次打开 .bpg 时,它可能会提示“未知格式”,但也有可能直接识别。如果没有直接识别,你可以在打开文件对话框里把“文件类型”改成“所有文件(.)”,然后手动选择 BPG 文件。实测下来,只要插件版本匹配,IrfanView 还能直接读取 BPG 的透明通道,也会以灰色棋盘格显示透明区域,这对需要确认素材边界的情况很有帮助。

这里有个小经验:IrfanView 不仅能看 BPG,还能在“文件 → 另存为”里把 BPG 转成 JPG、PNG、BMP、WebP 等常见格式,等于一个软件干了两件事。不过它的批量转换能力一般,后面会介绍更适合批量操作的方案。

2.2 开源老将:LibreOffice Draw 也能开 BPG

很多人不知道,办公套件 LibreOffice 的绘图组件 Draw,内置了部分 BPG 解码能力。你只要把 .bpg 文件直接拖进 Draw 窗口,它就会作为图片对象加载出来。这个功能我试过多次,对于查看单张 BPG 图、确认图片内容完全够用。

但它的限制也很明显:Draw 主要是矢量绘图工具,不是专业图片浏览器,打开大尺寸图片后会有点卡,也不能预览动图动画效果。所以我把它定位成“备用方案”,适合你在公司电脑上不方便装过多软件,但又急需确认一张 BPG 图内容的情况。

2.3 极客方案:ffplay 命令行查看

如果你平时会碰 FFmpeg 工具,那么 ffplay 算是最轻量、最不折腾的 BPG 查看器之一。只需要安装带ffplay.exe的 FFmpeg 包,然后打开命令行执行:

ffplay "C:\path\to\your-image.bpg"

FFmpeg 对 BPG 的原生支持其实不算完整,某些 BPG 派生格式(比如带 APNG 式扩展信息的)会解码失败,但对于最常见的 HEVC 帧内编码 BPG 文件,ffplay 都能正常播放/显示。它的优势是无需安装插件、不常驻后台,缺点是没有任何 UI,不能缩放、旋转、查看属性,所以只建议临时应急时用。

3. 图片转换实战:从 JPG/PNG 到 BPG,以及转回来

如果只是“能看”,BPG 的实用性还不太够。真正的重心在于转换——把现有图库批量转成 BPG,这才能体现体积优势。反之,你收到一张 BPG,但客户或平台不认,也得转回常见格式。这一节我把这两条路都走通。

3.1 准备命令行工具:bpgenc 与 bpgdec

BPG 官方发布过一个 Windows 命令工具包,里面包含两个核心程序:

  • bpgenc.exe:编码器,负责把 PNG/JPG 转成 BPG。
  • bpgdec.exe:解码器,负责把 BPG 转回 PNG/JPG。
  • 另外还有一个bpgenc.exe自带的编码库依赖,以及可选的 x265 模块。

你可以从官方发布页下载bpg-0.9.8-windows64.zip这类压缩包(主版本号可能更新,认准 Windows 64 位即可)。解压后,把bpgenc.exe和bpgdec.exe放到一个固定目录,比如D:\Tools\bpg,然后把该目录加入系统环境变量 PATH。这样,你后续在任何命令行窗口里都能直接敲bpgenc和bpgdec。

注意:BPG 编码器在 Windows 上需要 VC++ 运行库支持,如果运行时报错“缺少 MSVCP140.dll”,请先安装 Microsoft Visual C++ 2015-2022 Redistributable(x64)版本。

3.2 参数详解:不再靠默认值瞎猜

bpgenc的命令行参数不算多,但每个参数都直接影响输出文件的质量和大小,我拆开讲。

最基础的用法:

bpgenc -f 444 -q 30 -c ycgco input.png -o output.bpg

各参数含义:

  • -f:指定色度采样格式。可选 420、422、444。444 表示保留所有颜色信息,画质最高;420 会丢弃一部分颜色细节来压缩体积。如果你要转摄影素材或精细UI,建议用 444;如果是普通截图、网页元素,420 完全够用,体积也更小。
  • -q:量化参数,范围 0 到 51,数值越低画质越高、文件越大。常见取值:25-30 对应高画质高压缩;35-40 对应中等画质小体积;40 以上就是能看但细节明显损失的档位。它很像 JPEG 的“质量滑块”,但压缩曲线更平滑,不容易出现低质量下的块状斑。
  • -c:颜色空间转换方式。常见值有ycgco、ycbcr、rgb。默认是ycgco,兼容性和压缩比综合最优;如果你介意色偏,且原始图片是 RGB,想追求无损转换,可以选-c rgb,但体积会大一些。
  • -lossless:开启无损模式。加了之后-q基本无效,输出体积比 PNG 小,但比有损 BPG 大不少。适合对图片质量极其敏感的归档场景。
  • -e:指定编码器。默认内置编码器速度较慢但稳定;如果你安装了 x265 相关的 DLL,可以指定-e x265,编码速度会有明显提升,压缩率通常也更好。我建议有条件的同学优先用 x265 编码器。
  • -threads:线程数。默认自动检测 CPU 核心数,但如果你发现 CPU 占用吃不满,可以手动指定,比如-threads 8。编码是极其消耗 CPU 的操作,多核优化很关键。

再看几个实际场景。

场景一:把一张 PNG 转成高质量 BPG,追求“看不出差别但体积小”

bpgenc -f 444 -q 28 -c ycgco -e x265 -threads 8 input.png -o output.bpg

这个命令适合设计图、扫描件、带文字的截图。444 保留全部颜色采样,28 的量化值在视觉上几乎无损,实测下来体积大约是同类 PNG 的三分之一到四分之一,比 JPEG 也少 30% 到 50%。

场景二:大量 JPG 转 BPG,优先极端压缩

bpgenc -f 420 -q 38 -c ycgco -e x265 -threads 8 input.jpg -o output.bpg

420 降低一半色度信息,38 的量化值丢一部分高频细节,但人眼看缩略图或中等尺寸显示时,区别很小。这个组合适合图库站、电商商品主图的“个人备份版”——我强调个人备份,因为正式对外发布时,要注意接收方能不能打开这种格式。

场景三:无损转换

bpgenc -lossless -f 444 -c rgb input.png -o output.bpg

此处-c rgb配合-lossless,能保证每个像素的 RGB 数值与原始 PNG 完全一致,同时体积变小。但如果你的 PNG 本来就有 Alpha 通道,BPG 会自动保留,无需额外配置。

场景四:动态图/GIF 转 BPG 动画

BPG 支持动画,bpgenc可以直接读取 GIF 并输出动画 BPG:

bpgenc -f 420 -q 32 -a 0 input.gif -o output.bpg

-a 0的含义我不确定在不同版本里是否一致,更通用的做法是先不指定具体帧号,直接转换,它会自动保留所有帧。实测一个 8MB 的 GIF 转成 25fps 的 BPG 后可能变成 1-2MB,压缩效率惊人。

3.3 转换 BPG 回 JPG/PNG:关键的回头路

BPG 解回来很简单:

bpgdec output.bpg -o result.png

默认输出 PNG,因为这样可以保留透明通道和全部细节。如果你需要 JPG,可以加参数指定输出格式,或者解成 PNG 后再用其他工具转为 JPG。两个注意事项:

  • bpgdec解码时不会应用 ICC 色彩配置,某些带颜色配置的 BPG 图片解出来后颜色可能轻微变化。稳妥做法是解成 PNG,再在 Photoshop 或 GIMP 里套用原始 ICC,如果你确实需要做出版级色彩管理。
  • 如果 BPG 文件里有损丢失的信息,解码回 PNG 也找不回来,所以不要指望“BPG 当存档,随便转回无损”。

3.4 批量转换:命令行 for 循环或图形化的 XnConvert

一次转几百张图,手动敲命令不现实。Windows 命令行下最简单的批量操作是用for循环:

for %i in (*.png) do bpgenc -f 444 -q 28 -c ycgco -e x265 "%~i" -o "%~ni.bpg"

这段会在当前目录下把所有.png转成同名.bpg。注意在批处理文件(.bat)里,变量符要改成两个百分号,比如%%i和%%~ni。如果你在 CMD 窗口手输,则用单百分号。

如果你不喜欢命令行,那图形化的 XnConvert 是很靠谱的选择。XnConvert 支持输出为 BPG 格式,前提是软件里启用相关组件。你只需要:

  1. 导入图片文件(支持批量拖入)。
  2. 在“输出”选项卡里把格式选为 BPG。
  3. 设置质量参数(类似上面讲的-q)。
  4. 开始转换。

实测 XnConvert 批量转换 UI 响应流畅,失败率低,唯一缺点是底层不是最新 x265 编码器,压缩率略逊于官方命令行工具。所以我的建议是:日常单张或小批量用官方命令行,追求极限压缩用官方命令行;普通用户批量处理图库,用 XnConvert 的图形界面就好。

4. Windows 资源管理器缩略图与预览:装完这个插件就能直接看到图

查看和转换都解决了,但很多人忽略了一个关键体验环节:Windows 资源管理器里看不到 BPG 文件的缩略图。你打开文件夹,满屏全是统一的“未知文件”图标,找文件只能靠文字后缀,非常痛苦。

我的解决方案是用一个专为 Windows 资源管理器设计的文件系统扩展,它能在资源管理器列表、大图标模式、预览窗格里直接渲染 BPG 缩略图和元信息。安装后,你会得到以下能力:

  • 文件夹内直接看到 BPG 图片内容缩略图,不用逐个打开。
  • 选择文件时,右侧“预览窗格”也能直接显示。
  • 文件资源管理器底部状态栏能看到图片尺寸、文件大小,浏览体验接近系统原生格式。

这个插件的安装路径很关键:解压后,把对应的 DLL 文件复制到系统目录,然后以管理员身份运行注册命令。这里有几种不同的插件实现,网上能找到的常见是bpg thumbnail handler或类似命名的版本。安装时注意区分 64 位和 32 位系统,绝大多数现代 Windows 是 64 位,就选 64 位的 DLL。

注意:某些第三方插件在安装后需要重启资源管理器才生效。你可以在任务管理器里找到“Windows 资源管理器”,右键重新启动,不用重启电脑。

装完后如果你发现缩略图还是不出来,大概率是图标缓存问题。解决办法是删除 Windows 的资源管理器图标缓存,让系统重新生成。具体操作:

  1. 在文件资源管理器地址栏输入%localappdata%\Microsoft\Windows\Explorer并回车。
  2. 找到thumbcache_*.db和iconcache_*.db开头的文件。
  3. 退出资源管理器(任务管理器 → Windows 资源管理器 → 重新启动)。
  4. 在 CMD 里执行ie4uinit.exe -show或者直接重启一次资源管理器。
  5. 再打开文件夹,系统会重新扫描图片文件并生成缩略图。

还有一个更保险的方法:在“控制面板 → 文件夹选项 → 查看 → 始终显示图标,从不显示缩略图”这个勾选状态下,缩略图扩展是不起作用的。如果你的缩略图一直白屏,优先检查这项设置是不是被系统策略或美化工具改过了。

5. 常见问题与避坑指南

这部分我把实操中踩过的坑和网上常见疑问整理成速查,你可以直接对应排查。

5.1 转换速度太太太慢了,怎么办

BPG 编码是 CPU 密集型任务,尤其-f 444加高质量档位,一张 4K 图可能要跑几十秒。如果你觉得慢,优先做三件事:

  1. 确认编码器用了-e x265,并确保 x265 模块可用。内置编码器比 x265 慢不少。
  2. 调高-threads参数到物理核心数或逻辑核心数的一半。线程开太多反而会因内存带宽或线程同步开销拖慢速度。
  3. 降低-q的数值?不对,-q数值低画质高,编码耗时反而更长。所以如果速度优先,可以适当调高-q到 35 左右,肉眼差异不大,但耗时明显下降。

实测:一台 8 核 16 线程的机器,用 x265 编码器处理 20 张 1200 万像素照片,-q 28原始流程大概需要 4 分钟,调高线程并允许更低质量档位后,能压到 2 分钟出头。

5.2 转出来的 BPG 在部分设备上出现偏色或花屏

这个大概率是色度采样和色彩空间参数选择问题。电脑显示器大多是 RGB 色彩模型,但 BPG 默认用 YCgCo 色彩空间压缩再转换回 RGB,理论上接近无损。然而某些显卡驱动或图片解码库对 YCgCo 支持得不好,显示时会出现奇怪的颜色偏移。

遇到过这种问题,最直接的解决办法是用-c ycbcr或-c rgb重新编码。-c ycbcr是更老练但不常用的色彩空间,兼容性更好;-c rgb则完全绕开转换,但压缩率略低。我的建议是:如果图片要分发给多样化的设备,优先-c rgb或-c ycbcr;如果是自己归档、自己看,ycgco的压缩收益最明显。

5.3 装了缩略图插件后没效果

我见过很多次这种问题,原因通常不是插件有问题,而是 Windows 系统预取缓存把旧图标缓存记住了。先去“文件夹选项”确认缩略图功能开启,然后按第 4 节的方法重建图标缓存。如果还不行,就看事件查看器:

  1. 按Win + R,输入eventvwr.msc打开事件查看器。
  2. 在“Windows 日志 → 应用程序”里找Error级别事件,看有没有thumbnail、Shell、BPG关键词。
  3. 如果有报错,一般是 DLL 与系统版本冲突或者 32/64 位不匹配。卸载后换一个版本重新安装。

5.4 BPG 动图转出来没有动画效果

首先确认源文件确实是动态的 GIF 或 WebP。BPG 编码器支持的动态格式在转换时默认保留全部帧,但如果你只给了一张首帧的图片,那它自然就是静态的。

其次是播放器的原因。IrfanView 支持 BPG 插件的话,一般能播放动态 BPG;某些第三方插件或者在线预览工具只能渲染首帧,这是工具限制,不是文件损坏。

5.5 转回 JPEG 后发现文件比原图还大

这不是 BPG 的问题,而是 JPEG 编码本身的质量折损再放大。BPG 经过一次有损压缩后,再转 JPEG,前者损失不可逆,后者为了达到相同视觉质量会把文件“撑大”。所以我的建议是:如果你的原始 JPEG 非常重要,建议保留一份原始 JPEG 作为备份,BGP 只作为“衍生压缩存档”或“临时分发格式”使用,不要“转 BPG → 删原图 → 随时转回 JPEG”这么干。

5.6 发微信、传邮件给同事,对方打不开 BPG

这是 BPG 生态最大的痛点,也是每个想推广 BPG 的人绕不开的现实:绝大多数聊天软件、邮箱网页端、办公系统、在线图片托管服务都不认 BPG。所以我在实际工作中的做法是:

  • 个人归档、开发素材库,用 BPG 节省空间。
  • 对外交付给客户或同事,一律转回 PNG/JPG 再发。
  • 如果数量大,可以写一个批处理脚本,双击自动把指定目录下所有 BPG 转成 JPG,省得每次手动找工具。

一个实用的批处理脚本,保存为bpg_to_jpg.bat:

@echo off for %%i in (*.bpg) do ( bpgdec "%%i" -o "%%~ni.png" magick "%%~ni.png" "%%~ni.jpg" del "%%~ni.png" ) echo Done. pause

上面用到了 ImageMagick 的magick命令,或者你也可以直接用 IrfanView 命令行模式完成 PNG 到 JPG 的转换。这脚本的逻辑很简单,先解成 PNG,再转 JPG,最后清理临时 PNG。

我个人的体会是,BPG 这种格式确实高效,但决定它能走多远的,不是压缩率本身,而是生态。好在“个人电脑 + 本地工作流”这个场景里,我们能通过工具链完全掌控它。如果你手头有大量图片素材想节省空间,很值得花半小时把这套“查看、转换、预览”流程搭好。以后再遇到 BPG 文件,就不会像当初的我一样只能干瞪眼了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 17:14:47

Python实战第6期:列表与元组

文章目录 引言:为什么需要列表和元组? 一、列表的创建和操作 1. 创建列表 2. 访问列表元素 3. 修改列表元素 4. 列表切片 5. 列表运算 6. 列表长度 二、列表常用方法 1. 添加元素 2. 删除元素 3. 查找元素 4. 排序 5. 复制列表 6. 列表推导式 三、元组的特点 1. 什么是元组 2…

作者头像 李华
网站建设 2026/10/1 17:13:18

SEMA动态Adapter池:按需生长解决持续学习容量困境

1. 为什么预训练模型需要“按需长大”CVPR 2025 的 SEMA,核心一句话:给冻结的预训练模型配一个可增长的 Adapter 池,训练时根据当前任务和已有 Adapter 的匹配度,决定是复用老 Adapter,还是长一个新的 Adapter 出来。你…

作者头像 李华