3 มิ.ย. 2022 เวลา 05:00 • การศึกษา
สร้างโปรแกรมแปลงไฟล์ .HEIC เป็น .png
วันนี้เราจะมาสร้างโปรแกรมที่จะแปลงไฟล์ .HEIC เป็น .png กัน
ถือเป็นบทความที่พักระหว่างช่วงเรียน Machine learning กัน
STEP. 1
ก่อนอื่น เราต้องสร้างไฟล์ .py หรือ .ipynb มาก่อน
STEP. 2
pip install pillow_heif หรือ ดาวโหลด ตัว pillow_heif มา โดยเราสามารถทำตามได้จาก link นี้เลย
STEP. 3
เตรียมไฟล์ที่เราจะเอาไปแปลง อันนี้ผมดาวโหลดมาจาก Google drive ของผม ที่อัพโหลดมาจากโทรศัพท์ ไปใส่ใน Folder ใด Folder หนึ่ง
STEP. 4
เอา file python ไปไว้ข้างใน Folder ในที่นี้ผมใช้ vscode ในการเขียนโปรแกรม
จากนั้นให้ import OS, pillow_hief และ Image ของ PTL มา
เราลองใช้ OS ในการเรียก directory ว่า ตอนนี้ใน Folder มี directory ไหนบ้าง
STEP. 5
เราลองสร้าง Folder เก็บแต่ละ รูปเพื่อเพิ่มสถานการณ์ที่ดูยากขึ้นกัน และ ลอง os ดูอีกรอบ
เราจะได้ list ของ Folder รวมถึงชื่อไฟล์ python ของเรา ทีนี้เราจะเอาสิ่งนี้มาใช้ในการไล่ไปแต่ละ Folder และ ให้มันแปลง, เซฟ ไปใน Folder นั้น ๆ
STEP. 6
เขียน loop ที่จะไล่ไปแต่ละ Folder มันจะเป็น loop นอกให้เรา และ สร้าง loop อีกชั้น เพื่อไปเรียก รูปภาพในแต่ละ loop ซึ่งถือว่าเป็น loop ใน
Note ว่าอย่าลืมสร้างเงื่อนไขที่ว่าถ้าเป็นชื่อไฟล์ py จะข้ามมันไป
เราจะได้รูปทุกรูปมา
แก้ไขในบรรทัด print ออกและเพิ่มเป็นลูปในอีกชั้นเหมือนที่กล่าวไปข้างต้น
ขั้นตอนนี้หมายความว่า เราสามารถเข้าถึงไฟล์รูปภาพทั้งหมดใน Folder ได้แล้ว ทีนี้เราต้องสร้างเงื่อนไขในกรณีที่ ถ้ามีรูปที่ไม่ใช่ .HEIC จะข้ามไป และเอาไฟล์ที่เข้าตามเงื่อนไขมาแปลงไฟล์
หลักการทำงานมีอยู่ว่า เราจะเอา path ทั้งหมดมารวมกันเพื่อให้ pillow_heif สามารถเข้าถึงและเปิดภาพตาม path ได้ จากนั้นสร้าง Image ใหม่ โดยอ้างอิงข้อมูลจาก pillow_heif เมื่อเราสร้าง Image ใหม่เสร็จเราก็จะใช้ Image นี้ในการ save file ตาม Folder เดิมที่รูปอยู่
เรามาลองเช็คดูรูปภาพที่เพิ่มเข้ามา
มีรูปภาพทีใหม่เข้ามาเรียบร้อย
Extension
บางทีเราไม่ต้องการภาพ .heic แต่เดิมอยู่แล้ว การที่เราเพิ่มรูปภาพใหม่มาแต่ไม่ได้ใช้อันเก่าทำให้เปลืองพื้นที่ ดังนั้นเราต้องเพิ่ม code ในส่วนที่หลังจากสร้างรูปเรียบร้อยแล้ว
เพิ่ม code  os.remove(im.replace(".png",".heic")) ถัดจาก print()
Note ว่าต้องใส่ replace ให้ถูกไม่งั้นรูปที่จะถูกลบจะเป็น .png ซะเอง
ทั้งหมดนี้เป็นวิธีเบื้องต้นที่สามารถทำได้ อีกทั้งยังสามารถนำไปดัดแปลงได้
ผมหวังว่าผลงานครั้งนี้จะมีประโยชน์กับผู้อ่านนะครับ ขอบคุณครับ
ถ้าอยากได้ code เต็มสำหรับหลาย ๆ Folder ผมอัพไว้ใน Github โดยทุกคนสามารถเข้าไปดาวโหลดได้นะครับ
โฆษณา