ล่าสุดฉันใช้ JS เพื่อทำเรื่องสนุก ๆ และจำเป็นต้องประมวลผลรูปภาพ มีบทเรียนมากมายบนอินเทอร์เน็ตที่มีวิธีการต่างๆ มากมาย และวิธีการบางอย่างอาจไม่ได้ผลเสมอไป บทความนี้จะแบ่งปันวิธีการที่ได้รับการตรวจสอบโดยผู้เขียนเพื่อใช้ NodeJS ในการประมวลผลภาพ
npm i gm
gm เป็นไลบรารี Node ที่ให้ JS API บางตัวเพื่อให้นักพัฒนาสามารถประมวลผลอิมเมจได้ แต่มันอาศัย GraphicsMagick หรือ ImageMagick ข้างใต้ จริงๆ แล้ว gm คือบรรทัดคำสั่งสำหรับการเรียกเครื่องมือทั้งสองนี้
กล่าวอีกนัยหนึ่ง นอกเหนือจากการติดตั้ง gm แล้ว เรายังต้องติดตั้ง GraphicsMagick หรือ ImageMagick ด้วย
ImageMagickผู้เขียนใช้ MacOS และเลือกติดตั้ง ImageMagick โดยตรง
ตามคำสั่งของเว็บไซต์อย่างเป็นทางการ จำเป็นต้องใช้โค้ดเพียง 1 บรรทัด (หากคุณได้ติดตั้ง Brew บน Mac ของคุณ):
ชงติดตั้ง imagemagick --with-webp
ผมขอแนะนำพารามิเตอร์ --with-webp
คุณสามารถลบมันได้ แต่ถ้าคุณต้องการประมวลผลภาพในรูปแบบ webp คุณต้องเพิ่มมัน
การใช้การชงจะสะดวกกว่า คุณไม่ต้องกังวลกับตัวแปรสภาพแวดล้อม
GraphicsMagick
แน่นอน หากคุณไม่ใช้ ImageMagick คุณสามารถใช้ GraphicsMagick ได้:
ชงติดตั้ง graphicmagick
ตอนแรกฉันเลือกติดตั้ง ImageMagick และเมื่อฉันเขียนข้อความนี้ ฉันได้รับข้อผิดพลาดเสมอ:
const gm = ต้องการ('gm'); gm('เส้นทางไฟล์รูปภาพ').ครอบตัด(ความกว้าง, ความสูง, 0, 0).ปรับขนาด(ความกว้าง2, ความสูง2).คุณภาพ(คุณภาพ).write('เส้นทางไฟล์เอาท์พุต', ฟังก์ชัน (ผิดพลาด) { ถ้า (ผิดพลาด) { กลับ console.log (ผิดพลาด); } อื่น { console.log('ความสำเร็จ'); - -
หากคุณต้องการใช้ ImageMagick วิธีการเขียนข้างต้นนั้นผิดจริง ๆ คุณควรเขียนแบบนี้โดยระบุให้ชัดเจนว่าฉันต้องการใช้เครื่องมือ ImageMagick
:
const g = ต้องการ('gm'); const gm = g.subClass({imageMagick: true}); gm('เส้นทางไฟล์รูปภาพ').ครอบตัด(ความกว้าง, ความสูง, 0, 0).ปรับขนาด(ความกว้าง2, ความสูง2).คุณภาพ(คุณภาพ).write('เส้นทางไฟล์เอาท์พุต', ฟังก์ชัน (ผิดพลาด) { ถ้า (ผิดพลาด) { กลับ console.log (ผิดพลาด); } อื่น { console.log('ความสำเร็จ'); - -
บันทึกฟังก์ชันที่ใช้กันทั่วไปของ gm เพื่อใช้อ้างอิง:
หมายเหตุ: สามารถเรียก gm แบบลูกโซ่ได้ และเขียนได้สนุกมาก โดยจะอ่านไฟล์รูปภาพจาก gm(ชื่อไฟล์) ประมวลผลทีละชั้น และสุดท้ายก็เขียนลงใน file.write(ชื่อไฟล์, โทรกลับ)
ซูมภาพ
.resize(width, height)
ครอบตัดรูปภาพ
.crop(width, height, x, y)
หมุนภาพ
.rotate(color, deg)
color คือสีพื้นหลัง (หากมุมการหมุนองศาไม่เป็นทวีคูณของ 90 สีพื้นหลังก็มีประโยชน์ เพียงใช้รูปแบบ '#ededed')