1920 × 1080 का 24-बिट BMP लगभग 6 MB का होता है। वही छवि quality-90 JPEG में आमतौर पर 500 KB से कम हो जाती है। यह लगभग दस-गुना का अंतर बताता है कि BMP फाइलें आज भी पुराने स्कैनर, मेडिकल सॉफ्टवेयर और Windows इंटरनल्स में क्यों मिलती हैं — और यही वजह है कि इन्हें कहीं और इस्तेमाल करने से पहले अक्सर बदलना पड़ता है।
BMP की असली ताकत इसकी सरलता में है। इसे सही तरीके से बदलने का मतलब है यह समझना कि यह सरलता कब काम आती है, कब रुकावट बनती है, और कौन सा आउटपुट फॉर्मेट वास्तव में काम के हिसाब से है।
BMP आज भी क्यों मौजूद है
BMP पिक्सेल को न्यूनतम हेडर ओवरहेड के साथ स्टोर करता है। कोई Huffman टेबल नहीं, कोई DEFLATE स्टेट मशीन नहीं, कोई क्रोमा सबसैंपलिंग नहीं। एम्बेडेड सिस्टम, लीगेसी Windows टूल और किसी भी स्थिति के लिए जहाँ पूरा काम सिर्फ "हेडर पढ़ो और बाइट्स कॉपी करो" हो, यह सरलता काफी काम की है।
वहीं ये सीमाएँ इसे रोजमर्रा के इस्तेमाल से बाहर कर चुकी हैं:
- कोई प्रभावी संपीड़न नहीं। अनकंप्रेस्ड BMP बहुत बड़े होते हैं। RLE वेरिएंट मौजूद हैं, लेकिन ये आमतौर पर आधुनिक कोडेक्स से बेहतर नहीं होते।
- कोई विश्वसनीय अल्फा चैनल नहीं। 32-बिट BMP का अल्फा बाइट अलग-अलग टूल्स में असंगत रूप से समर्थित है।
- पंक्तियों का क्रम नीचे से ऊपर। अधिकांश BMP छवि के नीचे से ऊपर की ओर पंक्तियाँ स्टोर करते हैं, जिससे ऊपर से नीचे डेटा उम्मीद करने वाली प्रक्रियाओं में एक अतिरिक्त रूपांतरण चरण जुड़ जाता है।
- कोई मेटाडेटा इकोसिस्टम नहीं। क्लासिक हेडर में EXIF नहीं, ICC प्रोफाइल समर्थन नहीं, एनीमेशन भी नहीं।
अrchive या संगतता के लिए BMP ठीक है। लेकिन वेब, ईमेल, मोबाइल या स्टोरेज दक्षता के लिए इसे किसी और फॉर्मेट में बदलना ज़रूरी हो जाता है।
सही आउटपुट फॉर्मेट चुनना
कोई कमांड चलाने या कोड लिखने से पहले, यह तय कर लें कि आप क्या ऑप्टिमाइज़ कर रहे हैं।
| लक्ष्य | कब उपयोग करें | समझौता |
|---|---|---|
| JPG | फोटो, पूर्वावलोकन, कोई भी स्क्रीन डिस्प्ले | लॉसी, लेकिन फाइल बहुत छोटी |
| PNG | ग्राफिक्स, स्क्रीनशॉट, पारदर्शिता वाली चीज़ें | लॉसलेस, फोटो के लिए JPG से बड़ी |
| WebP | आधुनिक वेब, ऐप्स, जहाँ बैंडविड्थ मायने रखता हो | JPG/PNG से छोटी, ब्राउज़र समर्थन व्यापक |
यदि आप टेक्स्ट और आरेखों वाला स्कैन किया दस्तावेज़ बदल रहे हैं, तो PNG किनारे तेज रखता है। यदि यह किसी पुराने डिवाइस से फोटो है, तो JPG या WebP सही विकल्प है। वेब पर डिलीवरी के लिए WebP आमतौर पर आकार में बेहतर रहता है।
हमारे ब्राउज़र-आधारित BMP to JPG, BMP to PNG और BMP to WebP कन्वर्टर तीनों ही मामलों को लोकली हैंडल करते हैं — फाइल आपकी डिवाइस पर ही रहती है।
Windows पर बदलना
Paint
- Paint में BMP खोलें।
- फ़ाइल > इस रूप में सहेजें चुनें।
- JPEG चित्र, PNG चित्र या WebP चित्र चुनें।
- सहेजें।
Paint एक-एक फाइल के लिए ठीक है। इसमें न तो क्वालिटी नियंत्रण है और न ही बैच विकल्प, इसलिए पूरे फोल्डर की छवियों के लिए यह व्यावहारिक नहीं है।
PowerShell (ImageMagick)
आधिकारिक इंस्टॉलर से ImageMagick इंस्टॉल करें, फिर:
magick input.bmp output.jpg
magick input.bmp output.png
magick input.bmp output.webp
फोल्डर में बैच रूपांतरण के लिए:
Get-ChildItem *.bmp | ForEach-Object {
magick $_.FullName ($_.BaseName + ".jpg")
}
बाहरी टूल्स के बिना PowerShell
Windows 10 और 11 में .NET इमेजिंग स्टैक पहले से शामिल है। यह BMP से JPG और PNG के लिए काम करता है, लेकिन अतिरिक्त लाइब्रेरी के बिना WebP के लिए नहीं:
Add-Type -AssemblyName System.Drawing
$img = [System.Drawing.Image]::FromFile("input.bmp")
$img.Save("output.jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)
$img.Dispose()
macOS पर बदलना
Preview
- Preview में BMP खोलें।
- फ़ाइल > निर्यात करें चुनें।
- ड्रॉपडाउन से फॉर्मेट चुनें।
- JPEG के लिए आवश्यकतानुसार क्वालिटी समायोजित करें।
Preview तेज़ और निजी है, लेकिन Paint की तरह यह एक समय में केवल एक फाइल संभालता है।
Terminal में sips का उपयोग
sips macOS में बuilt-in है और BMP, JPEG, PNG और TIFF का समर्थन करता है:
sips -s format jpeg input.bmp --out output.jpg
sips -s format png input.bmp --out output.png
WebP के लिए ImageMagick या Homebrew webp पैकेज का cwebp आवश्यक है:
brew install webp
# cwebp सीधे BMP नहीं पढ़ता, इसलिए पहले PNG में बदलें
sips -s format png input.bmp --out temp.png
cwebp temp.png -o output.webp
rm temp.png
बैच शेल लूप
for f in *.bmp; do
sips -s format jpeg "$f" --out "${f%.bmp}.jpg"
done
Linux पर बदलना
ImageMagick
sudo apt install imagemagick
magick input.bmp output.jpg
magick input.bmp output.png
magick input.bmp output.webp
JPEG क्वालिटी समायोजित करें:
magick input.bmp -quality 90 output.jpg
बैच रूपांतरण
for f in *.bmp; do
magick "$f" "${f%.bmp}.jpg"
done
यदि आपको सिर्फ सबसे छोटी संभव WebP आउटपुट चाहिए, तो सीधे cwebp का उपयोग करें:
for f in *.bmp; do
cwebp -q 85 "$f" -o "${f%.bmp}.webp"
done
कोड से बदलना
जब आपको किसी एप्लिकेशन, पाइपलाइन या backend सेवा के भीतर रूपांतरण की ज़रूरत हो, तो लाइब्रेरी को कॉल करना आमतौर पर ImageMagick को शेल से बुलाने से साफ़ रहता है।
TypeScript / Node.js
sharp का उपयोग करें। यह BMP इनपुट को हैंडल करता है और JPG, PNG और 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")
ब्राउज़र में आप sharp नहीं चला सकते। हमारा BMP to WebP कन्वर्टर WebAssembly का उपयोग करके पूरी तरह से क्लाइंट साइड पर डिकोड और एन्कोड करता है।
PHP
यदि GD एक्सटेंशन सक्षम है, तो PHP में built-in इमेज फ़ंक्शन उपलब्ध हैं।
<?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
Go की मानक लाइब्रेरी BMP नहीं पढ़ती, लेकिन golang.org/x/image/bmp पढ़ती है। आउटपुट के लिए image/jpeg, image/png और 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 और WebP उसी पैटर्न का पालन करते हैं, png.Encode और webp.Encode के साथ।
Java
Java का ImageIO BMP पढ़ने के लिए डिफ़ॉल्ट रूप से काम करता है। WebP आउटपुट के लिए आपको webp-imageio या cwebp bindings जैसी लाइब्रेरी की आवश्यकता होती है।
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);
}
}
बेहतर JPEG क्वालिटी नियंत्रण के लिए JPEGImageWriteParam API का उपयोग करें।
Python
Pillow के साथ, Python BMP से किसी भी सामान्य फॉर्मेट में जाने का सबसे सीधा तरीका है।
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)
पारदर्शिता को ध्यान में रखते हुए PNG रूपांतरण के लिए, मूल मोड को संरक्षित रखें:
with Image.open("input.bmp") as img:
img.save("output.png")
आम समस्याएँ
- Indexed-color BMPs. 8-बिट या उससे कम के BMP एक पैलेट का उपयोग करते हैं। यदि आप स्पष्ट रूप से कन्वर्ट नहीं करते हैं, तो कुछ डिकोडर RGB मानों के बजाय पैलेट इंडेक्स लौटाते हैं। Pillow में, JPEG या WebP में सहेजने से पहले
img.convert("RGB")इसे हल करता है। - नीचे से ऊपर का ओरिएंटेशन। अधिकांश लाइब्रेरी इसे स्वचालित रूप से संभालती हैं, लेकिन यदि आप मैन्युअल BMP डिकोडर लिख रहे हैं, तो याद रखें कि एक सकारात्मक ऊँचाई फ़ील्ड का अर्थ है कि पंक्तियाँ नीचे से ऊपर संग्रहीत हैं।
- JPEG डिफ़ॉल्ट क्वालिटी। कई टूल्स डिफ़ॉल्ट रूप से 75–80 का उपयोग करते हैं। फुल-स्क्रीन में देखी जाने वाली तस्वीरों के लिए 90 सुरक्षित डिफ़ॉल्ट है। थंबनेल के लिए 70–80 ठीक है।
- WebP संगतता। WebP का ब्राउज़र समर्थन उत्कृष्ट है, लेकिन यह अभी भी कुछ पुराने डेस्कटॉप इमेज व्यूअर में विफल हो सकता है। यदि गंतव्य एक native Windows ऐप है, तो PNG या JPG सुरक्षित है।
कहाँ क्या उपयोग करें
- लीगेसी संग्रहण: मूल BMP रखें। स्टोरेज सस्ता है; मूल संस्करण खोना महँगा पड़ सकता है।
- वेब अपलोड: WebP में बदलें। यदि फॉलबैक की आवश्यकता हो, तो JPG कॉपी रखें।
- प्रिंट या संपादन वर्कफ़्लो: PNG छवि को लॉसलेस रखता है और संपीड़न आर्टिफैक्ट से बचाता है।
- ईमेल और मैसेजिंग: JPG सबसे सुरक्षित सार्वभौमिक फॉर्मेट है।
यदि आप कुछ इंस्टॉल किए बिना या कमांड लाइन के उपयोग किए तुरंत रूपांतरण चाहते हैं, तो हमारे BMP to JPG, BMP to PNG और BMP to WebP कन्वर्टर ब्राउज़र में ही काम करते हैं। चूँकि सब कुछ लोकली प्रोसेस होता है, इसलिए फाइल आपकी मशीन पर ही रहती है।



