Flat bitmap card
- Input
- An 80×50 Windows BMP with pale background, a blue block, and white bitmap text.
- Output
- A 1,268 byte JPEG. The card was recognizable, but sampled colors shifted because JPEG is lossy.
BMP → JPG compressed our 12,054 byte 24-bit bitmap to a 1,268 byte JPEG at quality 90.
From real runs
| Element | Result | What happens |
|---|---|---|
| Pixel dimensions | Kept | The 80×50 bitmap wrote an 80×50 JPEG with no default resize. |
| Color values | Changed | JPEG compression shifted sampled corner colors slightly from the original BMP values. |
| Flat text edges | Changed | White label text in the bitmap becomes subject to JPEG ringing around hard edges. |
| Transparency | Lost | The tested BMP had no alpha, and JPEG output cannot carry alpha even if a source variant has it. |
| File size | Changed | The sample dropped from 12,054 bytes to 1,268 bytes because JPEG compressed the RGB bitmap. |
| BMP resolution fields | Lost | The JPEG inspection showed JFIF fields rather than preserving the BMP pixel-per-meter metadata. |
The 80×50 bitmap wrote an 80×50 JPEG with no default resize.
JPEG compression shifted sampled corner colors slightly from the original BMP values.
White label text in the bitmap becomes subject to JPEG ringing around hard edges.
The tested BMP had no alpha, and JPEG output cannot carry alpha even if a source variant has it.
The sample dropped from 12,054 bytes to 1,268 bytes because JPEG compressed the RGB bitmap.
The JPEG inspection showed JFIF fields rather than preserving the BMP pixel-per-meter metadata.
We converted our BMP sample (703 KB) with Image engine on 2026-10-20. It took 10 ms and produced a 15 KB JPEG file, 98% smaller than the input. The engine raised 1 warning, listed below.
Input · sample.bmp · 703 KB
600 × 400 px, 24-bit
Output · sample.jpg · 15 KB
600 × 400 px, baseline
BMP → JPG makes a scan easier to upload to JPEG-only systems, but it does not add recognition. Extract text from the bitmap before relying on the converted photo.
Pillow 11
from PIL import Image
Image.open("in.bmp").convert("RGB").save("out.jpg", quality=90, optimize=True)Do not use JPEG for flat UI captures when halos around text are unacceptable.
The HTTP API and the MCP server run the exact engine this page uses (Image engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=bmp&to=jpg.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.bmp" -F "from=bmp" -F "to=jpg" \
-F 'options={"dpi":96}' \
--output output.jpg| Key | Applies to | Type | Default |
|---|---|---|---|
| dpi | Reading BMP | number | 96 |
| width | Writing JPEG | number | 0 |
| height | Writing JPEG | number | 0 |
| fit | Writing JPEG | contain · cover · fill | contain |
| quality | Writing JPEG | number | 90 |
| background | Writing JPEG | string | #ffffff |
| stripMetadata | Writing JPEG | boolean | true |
Slightly, yes. Our sampled corner changed after JPEG compression, which is expected for lossy output.
BMP is commonly raw or lightly encoded pixel data. JPEG uses lossy compression, so our 12,054 byte sample became 1,268 bytes.
Usually no. PNG is a better target for flat screenshots because it avoids JPEG halos around text and icons.