ตัวแปลง Base64 เป็น JPG

วาง Base64 ที่เก็บภาพถ่ายหรือรูปภาพใด ๆ แล้วบันทึกเป็นไฟล์ .jpg เลือก “ต้นฉบับ” เพื่อคง JPEG ไว้ตามเดิมทุกไบต์ หรือเลือก JPG เพื่อเข้ารหัสใหม่ด้วยคุณภาพที่คุณกำหนด

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. วางข้อความ Base64 หรือ URI แบบ data:image/jpeg;base64 ลงในช่องอินพุต
  2. ตรวจสอบภาพตัวอย่าง รูปแบบที่ตรวจพบ และขนาดภาพ
  3. JPG ถูกเลือกไว้แล้ว เลื่อนแถบ “คุณภาพ” ค่าที่สูงขึ้นจะเก็บรายละเอียดไว้มากขึ้น ส่วนค่าที่ต่ำลงจะได้ไฟล์ที่เล็กลง
  4. ดาวน์โหลดไฟล์ .jpg หากต้องการคงไฟล์ JPEG ที่มีอยู่ไว้ตามเดิมทุกประการ ให้เลือก “ต้นฉบับ” แทน

Base64 ของ JPEG มีลักษณะอย่างไร

ไฟล์ JPEG ทุกไฟล์ขึ้นต้นด้วยไบต์ FF D8 FF Base64 ของไฟล์จึงขึ้นต้นด้วย /9j/ เสมอ อักขระถัดมาบอกใบ้ถึงที่มาของไฟล์ได้ /9j/4AAQSkZJRg คือรูปภาพ JFIF ธรรมดา ส่วน /9j/4Q มักหมายถึงส่วนหัว Exif ที่กล้องหรือโทรศัพท์เขียนไว้ คุณจะพบ Base64 JPEG ในการอัปโหลดจากแอปมือถือ การส่งแบบฟอร์ม ไฟล์ส่งออกจาก CMS ไฟล์แนบอีเมล และฟิลด์รูปภาพใน REST API

JPG และ JPEG คือรูปแบบเดียวกัน นามสกุลที่สั้นกว่ามีที่มาจากยุค MS-DOS ซึ่งนามสกุลไฟล์ยาวได้ไม่เกินสามอักขระ ชนิด MIME ที่ถูกต้องคือ image/jpeg เครื่องมือนี้อ่านจากไบต์โดยตรง ดังนั้นแม้ data URI จะระบุเป็น image/jpg หรือ image/png ก็ยังถอดรหัสได้ถูกต้อง

คุณภาพ ความโปร่งใส และเมทาดาทา

JPEG เป็นรูปแบบที่สูญเสียข้อมูล และการเข้ารหัสใหม่แต่ละครั้งจะทิ้งรายละเอียดไปอีกเล็กน้อย เมื่ออินพุตเป็น JPEG อยู่แล้วและคุณต้องการเพียงตัวไฟล์ ให้เลือก ต้นฉบับ เพื่อบันทึกโดยไม่ต้องบีบอัดซ้ำอีกรอบ ใช้ตัวเลือก JPG เมื่อต้องการแปลง PNG, WebP หรือรูปแบบอื่น หรือเมื่อต้องการลดขนาดภาพถ่ายขนาดใหญ่ คุณภาพประมาณ 80 ถึง 90 เปอร์เซ็นต์เป็นจุดสมดุลที่นิยมใช้ระหว่างขนาดไฟล์กับความคมชัด

  • ความโปร่งใส JPEG ไม่มีช่องอัลฟา พื้นที่โปร่งใสจึงถูกเติมด้วยสีขาว หากต้องการคงความโปร่งใส ให้ใช้ PNG หรือ WebP
  • เมทาดาทา การแปลงจะวาดใหม่เฉพาะพิกเซล ข้อมูล Exif เช่น รุ่นกล้องหรือตำแหน่ง GPS จึงไม่ถูกนำไปด้วย ส่วน “ต้นฉบับ” จะเก็บไฟล์ไว้ทั้งหมดรวมถึงเมทาดาทา

ถอดรหัส Base64 JPEG ใน Node.js

const fs = require('fs');
// ตัดส่วนนำหน้า data URI ออกหากมี
const b64 = input.replace(/^data:[^,]+,/, '');
fs.writeFileSync('photo.jpg', Buffer.from(b64, 'base64'));

หากต้องการแปลงในทิศทางกลับกัน แปลง JPG เป็น Base64 จะเปลี่ยนภาพถ่ายเป็นสตริงหรือ data URI

คำถามที่พบบ่อย

JPG กับ JPEG เหมือนกันหรือไม่
ใช่ นามสกุลทั้งสองหมายถึงรูปแบบและชนิด MIME เดียวกัน คือ image/jpeg หากโปรแกรมต้องการนามสกุลแบบใดแบบหนึ่ง ก็เปลี่ยนชื่อไฟล์ได้ตามสะดวก
ทำไมพื้นหลังโปร่งใสจึงกลายเป็นสีขาว

JPEG จัดเก็บความโปร่งใสไม่ได้ ตัวแปลงจึงเติมพิกเซลโปร่งใสด้วยสีขาวก่อนเข้ารหัส เลือก PNG หรือ WebP เพื่อคงพื้นหลังโปร่งใสไว้

จะหลีกเลี่ยงการสูญเสียคุณภาพได้อย่างไร

หากข้อมูล Base64 เป็น JPEG อยู่แล้ว ให้ดาวน์โหลดเป็น “ต้นฉบับ” เพื่อให้ได้ไบต์ที่ตรงกันทุกประการ การเข้ารหัสใหม่เป็น JPG แม้จะใช้คุณภาพสูง ก็ยังสูญเสียคุณภาพไปบ้างเสมอ

ภาพถ่ายยังคงข้อมูล Exif ไว้หรือไม่

เฉพาะเมื่อเลือก “ต้นฉบับ” เท่านั้น JPG ที่แปลงแล้วมีเพียงพิกเซล ซึ่งยังเป็นวิธีง่าย ๆ ในการลบข้อมูลตำแหน่งก่อนแชร์ภาพถ่ายด้วย