EyeDropper API มีกลไกในการสร้างเครื่องมือดูดสีที่ช่วยให้ผู้ใช้สุ่มตัวอย่างสีจากหน้าจอของตน รวมถึงด้านนอกหน้าต่างเบราว์เซอร์ด้วย ดูวิธีที่เครื่องมือแก้ไขโมเดล 3 มิติ Blockbench ใช้ API นี้ในฐานของโค้ด
เกริ่นนำ
(บทความนี้ยังมีรูปแบบวิดีโออีกด้วย)
Blockbench เป็นเครื่องมือแก้ไขโมเดลสมัยใหม่ฟรีสำหรับโมเดลโลว์โพลีที่มีพื้นผิวแบบพิกเซล หากคุณเคยเล่น Minecraft คุณอาจจะเคยเห็นเนื้อหาที่สร้างด้วย Blockbench เช่น แพะ ที่เพิ่มไปยัง Minecraft ซึ่งเป็นส่วนหนึ่งของ Caves and Cliffs Update ตอนที่ 1 โค้ด Blockbench ที่ได้รับอนุญาตของ GPL เวอร์ชัน 3 เป็นโอเพนซอร์สบน GitHub
หากต้องการลองใช้ Blockbench ให้เปิดแอปโดยไปที่ web.blockbench.net เมื่อใช้ PWA คุณจะติดตั้งในเดสก์ท็อปแล้วเปิดในหน้าต่างแบบสแตนด์อโลนได้ หากคุณเพิ่งเริ่มใช้การสร้างแบบจำลอง 3 มิติ คุณอาจเริ่มต้นด้วยตัวอย่างไฟล์ .bbmodel
แบบโอเพนซอร์ส ซึ่งพบได้โดยใช้การค้นหาโค้ดของ GitHub เช่น ลองใช้โมเดลรถไฟที่คุณเห็นในภาพหน้าจอต่อไปนี้
EyeDropper API
นอกจากจะมีคุณลักษณะอื่นๆ มากมายแล้ว Blockbench มีฟีเจอร์ที่เติมสีด้วย ดังนั้นถ้าอยากติดแท็กรถไฟตอนนี้ก็ทำได้แล้ว โปรดอย่าทำในโลกแห่งความเป็นจริง คุณจะเห็นว่าในการติดแท็กของผม ผมใช้สีส้มสว่าง
นี่คือสีส้มที่เราดึงมาจากวอลเปเปอร์ macOS Ventura โดยตรงผ่าน EyeDropper API ดังที่คุณเห็นในภาพหน้าจอต่อไปนี้ หลอดดูดสี (วงกลมสีส้มด้านซ้ายของหน้าต่างแอป) สามารถเข้าถึงจากนอกแอปพลิเคชันมายังเดสก์ท็อปของฉันโดยตรง หรือแอปอื่นๆ ที่ฉันอาจเปิดอยู่
เนื่องจาก Blockbench เป็นโอเพนซอร์ส คุณจะเรียนรู้วิธีที่นักพัฒนาซอฟต์แวร์นำ API ไปใช้ได้ โค้ดที่เป็นปัญหาคือ JannisX11/blockbench/blob/master/js/texturing/color.js
Blockbench มีให้ใช้งานในรูปแบบแอป Electron.js เช่นกัน คุณจะเห็นจากความคิดเห็นว่ามีการจัดการกรณีพิเศษสำหรับปัญหาใน Electron ซึ่งเครื่องมือเลือกสีไม่สามารถเลือกสีนอกหน้าต่างได้ ปัญหานี้ไม่ใช่ปัญหาเมื่อใช้ Web API ซึ่งคุณจะเห็นในส่วนที่ไฮไลต์ของข้อมูลโค้ด การใช้ API นั้นทำได้ง่าย สร้างอินสแตนซ์ EyeDropper
ใหม่และเรียกเมธอด open()
ของอินสแตนซ์นั้น เมธอดนี้จะแปลค่าด้วยสตริง sRGBHex
ที่แสดงถึงสีที่เลือกในรูปแบบ sRGB เลขฐานสิบหก
new Action("pick_screen_color", {
icon: "colorize",
category: "color",
condition: () => typeof EyeDropper == "function",
click: async function () {
if (Blockbench.platform == "win32") {
// workaround for https://github.com/electron/electron/issues/27980
ipcRenderer.send("request-color-picker", {
sync: settings.sync_color.value,
});
} else if (typeof EyeDropper == "function") {
let dropper = new EyeDropper();
let { sRGBHex } = await dropper.open();
ColorPanel.set(sRGBHex);
}
},
});
บทสรุป
ตัวเลือกสีเป็นซอฟต์แวร์เพื่อความสร้างสรรค์ที่มีขนาดเล็กแต่มีความสำคัญอย่าง Blockbench ส่วนใหญ่แล้ว สีที่ต้องการไม่ได้เป็นส่วนหนึ่งของหน้าต่างแอป แต่เป็นสีที่พบเห็นที่อื่นนอกอาคาร หรือแม้กระทั่งบนหน้าจออื่น ตัวเลือกสีที่ไม่อนุญาตให้คุณเลือกสีในกรณีเช่นนี้อาจกลายเป็นสิ่งที่แทบไม่มีประโยชน์ EyeDropper API สร้างขึ้นสําหรับกรณีการใช้งานเช่นนี้โดยเฉพาะ และทำงานได้ดีกับ Blockbench มาโดยตลอดนับตั้งแต่มีการนำมาใช้ในเดือนพฤศจิกายน 2021 ถ้าคุณเล่นกับ Blockbench ขอให้สนุกกับการเลือกสี!