วิธีใช้งาน
- ลากไฟล์ .jpg หรือ .jpeg มาวางในพื้นที่วางไฟล์ คลิกเพื่อเลือกไฟล์ หรือวางรูปภาพ
- หากต้องการคงไฟล์ไว้ตามเดิมทุกประการ ให้เลือก “คงรูปแบบเดิม” หากต้องการลดขนาด ให้เลือก JPEG หรือ WebP แล้วลด “คุณภาพ”
- ตั้ง “ความกว้างสูงสุด” หากภาพถ่ายมีขนาดใหญ่กว่าขนาดที่จะแสดงจริง
- คัดลอกเอาต์พุตที่ต้องการ เช่น แท็ก img สำหรับหน้าเว็บ หรือ Base64 ล้วนสำหรับ API หรือดาวน์โหลดเป็นไฟล์
JPEG โดยสังเขป
JPEG เป็นรูปแบบมาตรฐานสำหรับภาพถ่าย ใช้การบีบอัดแบบสูญเสียข้อมูลโดยตัดรายละเอียดที่ตาแทบมองไม่เห็นออก และไม่รองรับความโปร่งใส ไฟล์มีนามสกุล .jpg, .jpeg หรือบางครั้ง .jfif แต่ชนิด MIME จะเป็น image/jpeg เสมอ ส่วน image/jpg ไม่ใช่ชนิดที่จดทะเบียนไว้ แม้เบราว์เซอร์หลายตัวจะยอมรับก็ตาม data URI ของ JPEG ขึ้นต้นด้วย data:image/jpeg;base64,/9j/ ซึ่งคือเครื่องหมายเริ่มต้นรูปภาพที่ถูกเข้ารหัสแล้ว
ลดขนาดภาพถ่ายก่อนเข้ารหัส
ภาพถ่ายคือกรณีที่ Base64 ส่งผลเสียมากที่สุด ไฟล์ JPEG ขนาด 200 KB จะกลายเป็นข้อความประมาณ 270 KB การตั้งค่าสองอย่างที่ช่วยได้มากที่สุดคือ
- ความกว้างสูงสุด การลดความกว้างลงครึ่งหนึ่งจะลดจำนวนพิกเซลเหลือหนึ่งในสี่ ภาพถ่ายจากโทรศัพท์ที่กว้าง 4000 พิกเซลแทบไม่จำเป็นต้องใช้ที่ขนาดนั้นเลย
- คุณภาพ ค่าประมาณ 70 ถึง 80% มักดูเหมือนต้นฉบับบนหน้าจอแต่มีขนาดเล็กกว่ามาก ส่วนค่าที่ต่ำมากจะทำให้ภาพแตกเป็นบล็อก
การแปลงเป็น WebP ที่คุณภาพใกล้เคียงกันมักได้ไฟล์ที่เล็กลงไปอีก ให้สังเกตขนาดหลังเข้ารหัสที่แสดงสำหรับแต่ละการตั้งค่า แล้วเลือกผลลัพธ์ที่เล็กที่สุดที่ยังดูดีอยู่
เมทาดาทา EXIF
ภาพถ่ายจากกล้องและโทรศัพท์มีเมทาดาทา EXIF ติดมาด้วย ได้แก่ รุ่นกล้อง วันที่และเวลา และบางครั้งก็มีพิกัด GPS หากไม่แปลงรูปแบบ เอาต์พุต Base64 จะมีไบต์ต้นฉบับรวมถึงเมทาดาทาทั้งหมด และใครก็ตามที่ถอดรหัสก็อ่านข้อมูลเหล่านี้ได้ ซึ่งเป็นสิ่งที่ต้องการเมื่อไฟล์ต้องตรงตามต้นฉบับทุกประการ เช่น เมื่อ API ตรวจสอบค่าแฮชหรืออ่านวันที่ถ่ายภาพ
การแปลงจะเข้ารหัสพิกเซลใหม่ในเบราว์เซอร์ และข้อมูล EXIF จะไม่ถูกคัดลอกตามไปด้วย เอาต์พุตจึงเล็กลงและไม่เปิดเผยสถานที่ถ่ายภาพอีกต่อไป
เมื่อใดที่ data URI ของ JPEG คุ้มค่า
กรณีที่เหมาะสม ได้แก่ ภาพตัวยึดตำแหน่งแบบเบลอขนาดจิ๋ว (รูปภาพกว้าง 20 ถึง 40 พิกเซลที่ฝังแบบอินไลน์ระหว่างที่ภาพเต็มค่อย ๆ โหลดตามมา) ภาพย่อในการตอบกลับแบบ JSON และไฟล์ HTML แบบไฟล์เดียวที่ส่งออก ส่วนภาพแบนเนอร์หลักและแกลเลอรีควรเป็นไฟล์แยกที่เบราว์เซอร์แคชได้
# Python
import base64
with open('photo.jpg', 'rb') as f:
uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')
คำถามที่พบบ่อย
JPG กับ JPEG เหมือนกันหรือไม่
ใช่ นามสกุล .jpg ที่สั้นกว่ามีที่มาจากระบบที่อนุญาตให้ใช้นามสกุลได้เพียงสามอักขระ ทั้งสองเป็นรูปแบบเดียวกันและมีชนิด MIME เป็น image/jpeg
การเข้ารหัส Base64 ทำให้คุณภาพ JPEG ลดลงหรือไม่
ไม่ลดลง Base64 เป็นการแทนไบต์ของไฟล์แบบไม่สูญเสียข้อมูล คุณภาพจะเปลี่ยนก็ต่อเมื่อคุณเลือกแปลงรูปแบบ ซึ่งจะเข้ารหัสรูปภาพใหม่ตามคุณภาพที่ตั้งไว้
data URI ของ JPEG มีพื้นหลังโปร่งใสได้หรือไม่
สตริง Base64 มีตำแหน่งที่ถ่ายภาพของฉันอยู่ด้วยหรือไม่
อาจมี หาก JPEG ต้นฉบับมีข้อมูล GPS ในเมทาดาทา EXIF และคุณเข้ารหัสโดยไม่เปลี่ยนแปลง ตำแหน่งนั้นจะอยู่ในสตริงด้วย การแปลงรูปภาพจะลบเมทาดาทา EXIF ออก