Un BMP 1920 × 1080 a 24 bit occupa quasi 6 MB. La stessa immagine come JPEG qualità 90 pesa solitamente meno di 500 KB. È questo divario di circa dieci a uno il motivo per cui i file BMP si trovano ancora in vecchi scanner, software medici e componenti interni di Windows — e per cui quasi sempre vanno convertiti prima di essere usati altrove.
Il vero vantaggio di BMP è la semplicità. Convertirlo bene significa sapere quando questa semplicità aiuta, quando diventa un limite e quale formato target si adatta davvero al lavoro.
Perché BMP esiste ancora
BMP memorizza i pixel con un overhead di intestazione minimo. Nessuna tabella Huffman, nessuna macchina a stati DEFLATE, nessun sottocampionamento cromatico. Per sistemi embedded, strumenti Windows legacy e qualsiasi situazione in cui "leggi l'intestazione, copia i byte" sia l'intero requisito, questa semplicità è davvero utile.
Sono proprio queste limitazioni ad averlo spinto fuori dall'uso quotidiano:
- Nessuna compressione efficace. I BMP non compressi sono enormi. Esistono varianti RLE, ma battono raramente i codec moderni.
- Nessun canale alfa affidabile. Il byte alfa del BMP a 32 bit è supportato in modo incoerente tra gli strumenti.
- Ordine delle righe dal basso verso l'alto. La maggior parte dei BMP memorizza le righe dal basso dell'immagine verso l'alto, il che aggiunge un piccolo passaggio di conversione per qualsiasi processo che si aspetti dati dall'alto verso il basso.
- Nessun ecosistema di metadati. Nessun EXIF, nessun supporto profilo ICC nell'intestazione classica, nessuna animazione.
Per archiviazione o compatibilità, BMP va bene. Per web, email, mobile o efficienza di archiviazione, deve diventare qualcos'altro.
Scegliere il formato di output corretto
Prima di eseguire un comando o scrivere codice, decidi cosa stai ottimizzando.
| Destinazione | Usalo quando | Compromesso |
|---|---|---|
| JPG | Fotografie, anteprime, qualsiasi visualizzazione su schermo | Con perdita, ma file molto piccoli |
| PNG | Grafica, screenshot, qualsiasi cosa con trasparenza | Senza perdita, più grande di JPG per le foto |
| WebP | Web moderno, app, dove conta la larghezza di banda | Più piccolo di JPG/PNG, ampio supporto browser |
Se stai convertendo un documento scannerizzato con testo e diagrammi, PNG mantiene i bordi nitidi. Se è una foto da un dispositivo datato, JPG o WebP è la scelta giusta. Per la distribuzione web, WebP solitamente vince in termini di dimensioni.
I nostri convertitori nel browser — BMP to JPG, BMP to PNG e BMP to WebP — coprono tutti e tre gli scenari in locale: il file non lascia il tuo dispositivo.
Convertire su Windows
Paint
- Apri il BMP in Paint.
- Scegli File > Salva con nome.
- Seleziona Immagine JPEG, Immagine PNG o Immagine WebP.
- Salva.
Paint va bene per file singoli. Non offre controllo sulla qualità né opzioni batch, quindi non è pratico per cartelle piene di immagini.
PowerShell (ImageMagick)
Installa ImageMagick dal sito ufficiale, poi:
magick input.bmp output.jpg
magick input.bmp output.png
magick input.bmp output.webp
Conversione batch in una cartella:
Get-ChildItem *.bmp | ForEach-Object {
magick $_.FullName ($_.BaseName + ".jpg")
}
PowerShell senza strumenti esterni
Windows 10 e 11 includono lo stack di imaging .NET. Funziona per BMP a JPG e PNG, ma non per WebP senza una libreria aggiuntiva:
Add-Type -AssemblyName System.Drawing
$img = [System.Drawing.Image]::FromFile("input.bmp")
$img.Save("output.jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)
$img.Dispose()
Convertire su macOS
Anteprima
- Apri il BMP in Anteprima.
- Scegli File > Esporta.
- Seleziona il formato dal menu a discesa.
- Se necessario, regola la qualità per JPEG.
Anteprima è veloce e riservata, ma come Paint elabora un solo file alla volta.
Terminale con sips
sips è integrato in macOS e supporta BMP, JPEG, PNG e TIFF:
sips -s format jpeg input.bmp --out output.jpg
sips -s format png input.bmp --out output.png
WebP richiede ImageMagick o cwebp dal pacchetto Homebrew webp:
brew install webp
# cwebp non legge direttamente il BMP, quindi converti prima in PNG
sips -s format png input.bmp --out temp.png
cwebp temp.png -o output.webp
rm temp.png
Ciclo shell batch
for f in *.bmp; do
sips -s format jpeg "$f" --out "${f%.bmp}.jpg"
done
Convertire su Linux
ImageMagick
sudo apt install imagemagick
magick input.bmp output.jpg
magick input.bmp output.png
magick input.bmp output.webp
Regola la qualità JPEG:
magick input.bmp -quality 90 output.jpg
Conversione batch
for f in *.bmp; do
magick "$f" "${f%.bmp}.jpg"
done
Se ti serve solo l'output WebP più piccolo possibile, usa direttamente cwebp:
for f in *.bmp; do
cwebp -q 85 "$f" -o "${f%.bmp}.webp"
done
Convertire con il codice
Quando devi convertire immagini dentro un'applicazione, una pipeline o un servizio backend, chiamare una libreria è solitamente più pulito che lanciare ImageMagick da shell.
TypeScript / Node.js
Usa sharp. Accetta BMP in input e produce JPG, PNG e WebP.
import sharp from "sharp"
async function convertBmp(
input: string,
output: string,
format: "jpg" | "png" | "webp"
) {
await sharp(input)
.toFormat(format, format === "jpg" ? { quality: 90 } : undefined)
.toFile(output)
}
await convertBmp("input.bmp", "output.jpg", "jpg")
await convertBmp("input.bmp", "output.png", "png")
await convertBmp("input.bmp", "output.webp", "webp")
Nel browser, dove sharp non è disponibile, il nostro convertitore BMP to WebP utilizza WebAssembly per decodificare e codificare completamente lato client.
PHP
PHP ha funzioni di immagine integrate se l'estensione GD è abilitata.
<?php
function bmpToJpg(string $input, string $output, int $quality = 90): void {
$image = imagecreatefrombmp($input);
imagejpeg($image, $output, $quality);
imagedestroy($image);
}
function bmpToPng(string $input, string $output): void {
$image = imagecreatefrombmp($input);
imagepng($image, $output);
imagedestroy($image);
}
function bmpToWebp(string $input, string $output, int $quality = 90): void {
$image = imagecreatefrombmp($input);
imagewebp($image, $output, $quality);
imagedestroy($image);
}
bmpToJpg("input.bmp", "output.jpg");
bmpToPng("input.bmp", "output.png");
bmpToWebp("input.bmp", "output.webp");
Go
La libreria standard di Go non legge BMP, ma golang.org/x/image/bmp sì. Per l'output usa image/jpeg, image/png e golang.org/x/image/webp.
package main
import (
"image/jpeg"
"image/png"
"os"
"golang.org/x/image/bmp"
"golang.org/x/image/webp"
)
func bmpToJpg(input, output string, quality int) error {
f, err := os.Open(input)
if err != nil {
return err
}
defer f.Close()
img, err := bmp.Decode(f)
if err != nil {
return err
}
out, err := os.Create(output)
if err != nil {
return err
}
defer out.Close()
return jpeg.Encode(out, img, &jpeg.Options{Quality: quality})
}
PNG e WebP seguono lo stesso modello con png.Encode e webp.Encode.
Java
ImageIO di Java legge BMP nativamente. Per l'output WebP serve una libreria come webp-imageio o binding cwebp.
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class BmpConverter {
public static void bmpToJpg(String input, String output, float quality) throws IOException {
BufferedImage image = ImageIO.read(new File(input));
File out = new File(output);
ImageIO.write(image, "jpg", out);
}
public static void bmpToPng(String input, String output) throws IOException {
BufferedImage image = ImageIO.read(new File(input));
File out = new File(output);
ImageIO.write(image, "png", out);
}
}
Per un controllo più fine della qualità JPEG, usa l'API JPEGImageWriteParam.
Python
Con Pillow, Python è il modo più diretto per convertire BMP nei formati più comuni.
from PIL import Image
with Image.open("input.bmp") as img:
img.convert("RGB").save("output.jpg", quality=90)
with Image.open("input.bmp") as img:
img.save("output.png")
with Image.open("input.bmp") as img:
img.save("output.webp", quality=90)
Per conservare la trasparenza in uscita come PNG, non forzare la conversione RGB:
with Image.open("input.bmp") as img:
img.save("output.png")
Trappole comuni
- BMP indicizzati. I BMP a 8 bit o inferiori usano una tavolozza. Alcuni decoder restituiscono indici di tavolozza invece di valori RGB se non converti esplicitamente. In Pillow,
img.convert("RGB")risolve il problema prima di salvare come JPEG o WebP. - Orientamento dal basso verso l'alto. La maggior parte delle librerie lo gestisce automaticamente, ma se scrivi un decoder BMP manuale, ricorda che un campo altezza positivo significa che le righe sono memorizzate dal basso verso l'alto.
- Qualità JPEG predefinita. Molti strumenti usano 75–80 come predefinito. Per foto visualizzate a schermo intero, 90 è più sicuro. Per le miniature, 70–80 vanno bene.
- Compatibilità WebP. WebP ha un ottimo supporto browser, ma fallisce ancora in alcuni visualizzatori di immagini desktop datati. Se la destinazione è un'app nativa Windows, PNG o JPG sono più sicuri.
Cosa usare dove
- Archivi legacy: conserva il BMP originale. Lo storage è economico; perdere la versione canonica no.
- Caricamenti web: converti in WebP. Se serve un fallback, tieni una copia JPG.
- Flussi di stampa o montaggio: PNG rimane senza perdita ed evita artefatti di compressione.
- Email e messaggistica: JPG è il formato universale più sicuro.
Se preferisci evitare installazioni, riga di comando e caricamenti su server, puoi usare i nostri convertitori BMP to JPG, BMP to PNG e BMP to WebP. Tutto viene eseguito nel browser, quindi il file resta sul tuo computer per tutto il processo.



