BMP转换器
把BMP文件转换成JPG、PNG或WebP,也可以把任意照片存回BMP。调色板、RLE压缩和透明度都能处理。
把文件拖到这里
.bmp, .dib, .jpg, .jpeg, .png, .webp · 最大100 MB
如何转换BMP图片
- 1
拖入BMP或照片
一次最多100个文件。两个方向都接受混在一起的文件;与所选方向不符的文件会按文件名列出,不会悄悄跳过。
- 2
选择方向和格式
BMP转照片可以得到JPG、PNG或WebP。照片转BMP可写成兼容性最好的24位文件;透明度必须保留时,写成32位文件。
- 3
下载转换后的文件
单个文件直接下载,多个文件打包成pulsarkit-bmp.zip。无法读取的文件会被跳过,其余文件照常完成。
为什么2026年还会遇到BMP
BMP在网站上没有用处。它基本上以原始形式存储像素,所以一张1920×1080的图片约为6 MB,同一张图存成PNG只有它的五分之一。让它延续下来的是网站以外的一切:CAD软件和测量仪器导出BMP,因为它们的文件写入模块是几十年前写的;打印机和扫描仪驱动把它当作中间格式;工业软件的导入格式固定不变;还有一些Windows实用程序仍然这样保存截图。这个转换器就是专门为这些文件做的。如果你要为新图片选格式,选PNG;如果别人给了你一个BMP,而下一个工具不接受它,这里就是出路。
格式里的麻烦细节,都已处理
BMP与其说是一种格式,不如说是一族格式,而这些差别正是简单的读取程序出错的地方。行的顺序由高度字段的正负号表示:正值表示行从下往上存储,这是常见情况;负值表示从上往下。每一行都填充到四字节的整数倍,这些填充不属于图像。通道按蓝、绿、红的顺序存储,而不是反过来。颜色可以是每像素一、四或八位的调色板索引,也可以是按位掩码打包的十六位,或者直接存储的二十四位和三十二位。索引图像还可能使用游程编码(RLE)。文件头本身有七种已知长度,从十二字节的OS/2格式到124字节的第5版。这里全部由专门编写的代码读取,因为npm上所有通用的BMP库都在十年前停止了维护,而且没有一个能处理全部情况。
写出其他程序真正能打开的BMP
反方向转换时,色深的选择比看上去更重要。24位文件使用最普通的40字节文件头,所有BMP读取程序都认识它;但它会丢掉透明度,因为这个格式没有地方存放。32位文件可以保留Alpha通道,但前提是明确声明通道布局,所以本工具写入108字节的第4版文件头,并写明红、绿、蓝和Alpha的位掩码。没有这些掩码,很多查看器会完全忽略第四个字节,把里面碰巧存着的内容当成颜色显示。行按从下往上的顺序写入并填充到四字节,分辨率标记为惯用的72 DPI,结果还在测试套件里逐字节对照规范检查过。
文件留在浏览器中
读取BMP文件头、解开调色板和游程编码数据、编码为JPG、PNG或WebP,以及写回BMP,全部在浏览器标签页里完成。不上传,也不存储任何内容。BMP文件常常来自测量设备、扫描仪和内部系统,所以这不只是锦上添花。浏览器工具能用而上传类网站不能用,往往就是因为这一点。
常见问题
现在为什么还有人需要BMP文件?
因为老旧软件和专用软件坚持要它。CAD系统、实验室和测量仪器、打印机驱动,以及一些工业控制软件,要么导出BMP,要么只接受BMP。与BMP互转通常是为了把文件交给这些程序,而不是为了图片本身。
BMP比PNG大多少?
通常大三到五倍,因为BMP完全不压缩像素,而PNG用无损方式压缩。一张1920×1080的24位BMP约为6 MB;同一张图存成PNG一般在1到2 MB之间,像素完全相同。
支持压缩过的BMP文件吗?
支持游程编码的BMP:RLE8和RLE4都能在这里解开,包括增量(delta)和绝对模式的转义码。另有一种少见的变体,把整个JPEG或PNG嵌在BMP容器里(某些打印机驱动会生成这种文件),这种不支持,会明确提示,而不是输出一张损坏的图片。
透明度能保留吗?
来自带Alpha掩码的32位BMP时可以:转成PNG和WebP都能保留,因为两者都支持透明度;转成JPG不行,JPG无法存储透明度。反方向转换时,选择32位输出就能保留。还有一个常见的怪现象会自动处理:有些老编码器写出的32位文件里,每个Alpha字节都是零,照字面理解会得到一张完全看不见的图片,所以这种情况按完全不透明处理。
保存BMP时应该选哪种色深?
除非确实需要透明度,否则选24位。这是所有BMP读取程序都能识别的形式,而一些老软件显示32位文件时会出错。只有当Alpha通道必须保留,并且你确定接收文件的程序能读取第4版文件头时,才选32位。
一次能转换多少个文件?
最多100个文件,每个最大100 MB,合计最多500 MB,全部使用相同的设置。文件逐个处理,一个文件读不出来,不会取消这批里的其他文件。
文件会上传到服务器吗?
不会。BMP的读取和写入模块是在浏览器标签页里运行的普通代码,JPG、PNG和WebP的编码和解码由同样在浏览器里运行的WebAssembly模块完成。文件不会离开设备,关闭页面后也不会保留任何内容。