ฉันไม่ได้ฆ่า Stanley Lieber: วิธีวาดภาพด้วย 9front
(triapul.cz)- สรุปขั้นตอนการวาดภาพทั้งหมดบน 9front โดยยึด
paint(1)เป็นศูนย์กลาง ตั้งแต่การเลือกอุปกรณ์ป้อนข้อมูลไปจนถึงการจัดการแคนวาส การปรับแต่งภาพ และการส่งออก - งานจะทำในฟอร์แมตภายในของ 9front คือ image(6) และใช้
paint(1)วาด จากนั้นปรับผลลัพธ์ด้วยpage(1),crop(1),vcrop(1),resize(1),rotate(1) paint(1)ไม่มีการรับรู้แรงกด เลเยอร์ หรือการตัด/วาง ผู้ใช้จึงต้องจัดการพื้นที่ทำงานและสีด้วยตนเองเหมือนทำงานบนกระดาษ- ครอบคลุมทั้งเมาส์ นิ้ว ปากกา แท็บเล็ตภายนอก และการป้อนข้อมูลผ่าน drawterm/VNC แต่ปุ่มปากกาจะจำลองการคลิกเมาส์ จึงใช้งานได้สะดวกหากวางคีย์บอร์ดและเมาส์ไว้ใกล้มือ
- สำหรับการแชร์ภายนอก ควรแปลงเป็น PNG และเนื่องจาก PNG หรือ JPG ไม่ใช่รูปแบบที่
paint(1),crop(1),vcrop(1)แก้ไขได้โดยตรง หากจำเป็นต้องแปลงกลับเป็นฟอร์แมต image ของ 9front อีกครั้ง
การตั้งค่าพื้นฐานสำหรับการวาดภาพบน 9front
- การวาดภาพต้องมีทั้ง “เครื่องมือสำหรับวาด” และ “พื้นผิวสำหรับวาด” และบน 9front นั้นสามารถใช้งานได้หลายรูปแบบ ไม่ได้จำกัดแค่อุปกรณ์ปากกาจริงเท่านั้น
- หากเป็นคอมพิวเตอร์ที่รัน 9front ได้ ก็ทำตาม
How to drawได้ และถ้าต้องการอุปกรณ์ที่วาดบนหน้าจอได้โดยตรง โน้ตบุ๊ก 2-in-1 ที่รองรับ Wacom จะเหมาะสม - รายการอุปกรณ์ตระกูล ThinkPad ที่ใช้งานได้ดีจริงมีดังนี้
ลักษณะของอุปกรณ์ป้อนข้อมูลแต่ละแบบ
- การวาดด้วยเมาส์ เป็นวิธีแบบดั้งเดิม แต่มีข้อดีคือใช้งานได้กับคอมพิวเตอร์ทุกเครื่องที่มีเมาส์
- การป้อนข้อมูลด้วยนิ้ว จะทำให้การแตะหน้าจอจำลองการคลิกเมาส์ซ้าย แต่ไม่สามารถแทนการคลิกแบบอื่นได้ จึงควรวางเมาส์ไว้ใกล้มือ
- สำหรับแท็บเล็ตภายนอก รุ่นที่มีจออาจไม่ทำงานบน 9front ส่วนรุ่นที่ไม่มีจออาจใช้งานได้
- อุปกรณ์ที่แนะนำคือ GAOMON S620 ซึ่งทำงานแบบเสียบแล้วใช้ได้บน 9front
- Wacom CTL-672 ทำงานคล้ายทัชแพดพิกัดสัมพัทธ์
- Wacom CTL-490 ใช้งานไม่ได้
- ข้อมูลที่เกี่ยวข้องอยู่ที่ [fqa] 3.2.4 - Tablet Digitizers
- การวาดให้ดีด้วยคีย์บอร์ดอย่างเดียวทำได้ยาก แต่การทำงานกับ
paint(1)ยังจำเป็นต้องใช้คีย์บอร์ด- ในแท็บเล็ตคอมพิวเตอร์หรือสภาพแวดล้อมพิเศษที่เข้าถึงคีย์บอร์ดจริงได้ยาก สามารถใช้คีย์บอร์ดบนหน้าจอ
bitsy/keyboardได้ - ตัวอย่างการรันคือ
rio -k 'bitsy/keyboard -n'
- ในแท็บเล็ตคอมพิวเตอร์หรือสภาพแวดล้อมพิเศษที่เข้าถึงคีย์บอร์ดจริงได้ยาก สามารถใช้คีย์บอร์ดบนหน้าจอ
- หากใช้ drawterm/VNC ก็สามารถเชื่อมต่อไปยังเครื่อง 9front แบบรีโมตหรือเสมือนได้ ทำให้ใช้อุปกรณ์ป้อนข้อมูลได้หลากหลายขึ้น
- สามารถวาดด้วยนิ้วจากโทรศัพท์ Android วาดด้วยเมาส์จาก Linux และ MacOS หรือใช้อุปกรณ์ป้อนข้อมูลบน Windows ที่ 9front ยังไม่รองรับโดยตรงได้
- เว็บไซต์ที่เกี่ยวข้องคือ drawterm.9front.org
ฟอร์แมต image(6) และข้อสมมติของ paint(1)
- การวาด การครอป และการจัดการภาพของ 9front จะทำกับไฟล์ฟอร์แมตภายใน image(6)
- ระหว่างสร้างภาพอาจไม่ต้องกังวลกับฟอร์แมตมากนัก แต่ถ้าจะนำไปแชร์ภายนอกก็ต้องแปลงเป็นฟอร์แมตอื่น
- ชื่อไฟล์มักยกตัวอย่างเป็นรูปแบบอย่าง
file.picแต่จริง ๆ แล้วจะตั้งชื่ออย่างไรก็ได้ - คู่มือนี้กล่าวถึงเฉพาะ
paint(1)จากบรรดาโปรแกรมวาดภาพหลายตัวใน 9front paint(1)ควรถูกมองว่าเป็นการทำงานใกล้เคียงกับการวาดบนกระดาษด้วยหมึกและสี มากกว่าโปรแกรมวาดภาพดิจิทัลทั่วไป
ข้อจำกัดและการใช้งานพื้นฐานของ paint(1)
- ปากกาและปุ่มบนแท็บเล็ตจะจำลองอินพุตของเมาส์ และในคำอธิบายจะอ้างอิงเป็นการกระทำของเมาส์ทั้งหมด
- การลอยอยู่เหนือหน้าจอเทียบเท่ากับการเลื่อนเมาส์
- การแตะพื้นผิวเทียบเท่ากับการคลิกซ้ายหรือกดค้าง
- ปากกาที่เหมาะที่สุดควรมีปุ่ม 2 ปุ่มสำหรับคลิกกลางและคลิกขวา
- หากมีเฉพาะปุ่มที่คลิกขวาได้ สามารถกด Shift ค้างแล้วกดปุ่มเพื่อจำลองการคลิกกลางได้
paint(1)และ 9front ไม่รองรับการรับรู้แรงกด- ไม่มีเลเยอร์และไม่มีการตัด/วางเช่นกัน สิ่งที่วาดลงไปจะเป็นผลลัพธ์ตามนั้น
- การบันทึกและเปิดไฟล์ทำผ่านการกดแป้นพิมพ์
w: บันทึกไฟล์r: เปิดไฟล์หรืออ่านใหม่อีกครั้ง|: pipe แคนวาสปัจจุบันเข้าคำสั่งเพื่อแปลง< command: อ่านผลลัพธ์ของคำสั่งเข้าpaint(1)เพื่อแทนที่แคนวาสปัจจุบัน> command: ส่งแคนวาสปัจจุบันเข้าไปยังคำสั่งเพื่อเขียนออกเป็นไฟล์
- ตัวอย่างงานมีดังนี้
| rotate -u: หมุนแคนวาส< crop -i -50 glenda.pic: เปิดglenda.picโดยเพิ่มกรอบสีดำ 50 พิกเซล> crop -i -50 | rotate -r 90 > modified_glenda.pic: เพิ่มกรอบให้แคนวาสปัจจุบัน หมุน 90 องศา แล้วบันทึก
แคนวาสถูกกำหนดจากขอบเขตที่มีพิกเซลถูกวางไว้
- ใน
paint(1)แคนวาสคือพื้นที่สี่เหลี่ยมที่บรรจุภาพวาด - หน้าต่างสีขาวทันทีหลังเริ่มโปรแกรมคือไฟล์ว่าง และแคนวาสจะยังไม่ถูกสร้างจนกว่าจะวาดหรือลบพิกเซลแรก
paint(1)จะถือว่าพิกเซลที่อยู่ไกลที่สุดเป็นขอบเขตของแคนวาส- ขนาดหน้าต่างไม่ได้กำหนดขนาดแคนวาส
- พิกเซลที่ถูกลบด้วยยางลบก็ยังถือว่าเคยมีการวางพิกเซล
- แนะนำให้มองขนาดหน้าต่าง
paint(1)ที่สร้างขึ้นครั้งแรกเป็น แคนวาสทำงาน แล้วทำเครื่องหมายครอปไว้ที่มุมก่อนเริ่มทำงาน - หากต้องการภาพที่มีขนาดแม่นยำ จะต้องใช้ขั้นตอนแยกต่างหากเพื่อสร้างแคนวาสขนาดคงที่ แล้วค่อยคำนวณการครอปหรือตัดขอบว่างหลังทำงานเสร็จ
เครื่องมือหลักของ paint(1)
- การเลือกเครื่องมือทำได้โดยคลิกซ้ายที่แถบเครื่องมือด้านล่าง
- สี
- เลือกสีด้วยการคลิกซ้าย
- หากคลิกขวาที่สีในทูลบาร์ จะสามารถใส่โค้ดเลขฐานสิบหกเพื่อเปลี่ยนพาเลตได้
paint(1)จะไม่จำพาเลตหลังปิดโปรแกรม ดังนั้นต้องตั้งใหม่ทุกครั้งเมื่อเปิดหน้าต่างใหม่- ถ้าต้องการใช้มากกว่า 16 สี สามารถเปิดไฟล์ภาพเดียวกันในหลายหน้าต่าง
paint(1)แล้วซิงก์กันด้วยwและr
- แปรง
- เลือกขนาดแปรงด้วย
0-9หรือคลิกซ้าย แล้วลากเพื่อวาด
- เลือกขนาดแปรงด้วย
- เติมสี
- ใช้
f,c, เมาส์ซ้าย, เมาส์กลาง - เปลี่ยนพื้นที่ของพิกเซลที่เชื่อมต่อกันด้วยสีเดียวกันให้เป็นอีกสีหนึ่ง
- ใช้เปลี่ยนสีพื้นหลังได้ด้วย และสีพื้นหลังคือสีที่ยางลบจะเปลี่ยนให้
cจะล้างทุกอย่าง แล้วเปลี่ยนพื้นหลังเป็นสีที่เลือก ทำให้กลับสู่สถานะไฟล์ว่าง
- ใช้
- ยางลบ
- ใช้
0-9, เมาส์กลาง - เปลี่ยนบริเวณใต้เคอร์เซอร์ให้เป็นสีพื้นหลังด้วยขนาดเดียวกับแปรงปัจจุบัน
- ใช้
- เส้นตรงและวงกลม
- เส้นตรงใช้ไม้บรรทัดช่วย
- วงกลมให้ใช้วัตถุทรงกลมแบน ๆ หรือวาดวงกลมด้วยวงเวียนบนกระดาษลอกลายไว้ล่วงหน้าแล้วค่อยลากตาม
- การเลื่อนมุมมอง การซูม และการย้อนกลับ
- กดเมาส์ขวาค้างแล้วเลื่อนเพื่อแพน
- ใช้
-,+เพื่อซูมเข้า/ออก แต่ซูมออกให้ไกลกว่าระดับเดิมตอนเริ่มต้นไม่ได้ Escจะรีเซ็ตการซูมและจัดแคนวาสให้อยู่กึ่งกลางuจะย้อนเฉพาะเส้นต่อเนื่องล่าสุด และแม้เป็นเส้นยาวเส้นเดียวก็อาจถูกแบ่งเป็นหลายขั้นของ undo
เลเยอร์ปลอมและการลบตามสี
paint(1)ไม่มีเลเยอร์ แต่สามารถสร้าง เลเยอร์ปลอม ได้ด้วยการสเก็ตช์ด้วยสีที่ไม่ได้ใช้จริง แล้วค่อยลงเส้นทับ- ในตัวอย่างใช้ HotPink เป็นสีสเก็ตช์ และเมื่องานเสร็จก็ลบเฉพาะสีนั้นออก
- หากใช้การเติมสีด้วยมือหรือยางลบแบบละเอียดอาจกินเวลานาน จึงมีประโยชน์ที่จะใช้
picoเพื่อแทนที่สีหนึ่งให้กลายเป็นสีพื้นหลัง - สามารถติดตั้ง
picoได้ด้วยคำสั่งต่อไปนี้git/clone https://github.com/qwx9/pico
- คำอธิบายที่เกี่ยวข้องอยู่ที่ Image Manipulation on Plan 9 Using pico
- ค่า RGB แบบฐานสิบของ HotPink
#ff5fd7คือ255, 95, 215และมีตัวอย่างการแปลงด้วยpc(1)รวมอยู่ด้วย
page(1), crop(1), vcrop(1), resize(1), rotate(1)
page(1)เป็นตัวดูเอกสาร ใช้แสดงภาพหลายฟอร์แมต รวมถึง PDF และอีบุ๊ก- สามารถดูภาพได้ด้วย
page my_picture.pic - แนะนำให้ตรวจผลลัพธ์การจัดการภาพด้วย
page(1)ก่อนเขียนออกเป็นไฟล์เสมอ - ใน
page(1)เองก็สามารถกดwเพื่อบันทึกผลลัพธ์ที่กำลังแสดงอยู่เป็นไฟล์ได้
- สามารถดูภาพได้ด้วย
- หากภาพมีขนาดใหญ่กว่าหน้าต่าง
paint(1)ก็สามารถเปิดหน้าต่างpage picture.fileแยกต่างหากแล้วใช้fit widthหรือfit heightเป็นเหมือนหน้าต่างพรีวิวได้ vcrop(1)เป็นเครื่องมือครอปแบบกราฟิก- เมาส์ซ้ายใช้แพน
- เมาส์กลางใช้เลือกเครื่องมือครอป
- เมาส์ขวาใช้แสดงตัวเลือก เช่น การบันทึก
- เนื่องจากซูมไม่ได้ จึงมีข้อจำกัดเมื่อจะครอปพื้นที่ที่ใหญ่กว่าหน้าต่างหรือเมื่อต้องการความแม่นยำระดับพิกเซล
crop(1)ใช้ลบหรือเพิ่มแถวพิกเซลcrop -x 50 mypic.pic > mypic_crop.pic: ครอปด้านซ้ายขวาออกด้านละ 50 พิกเซลcrop -i -10 -b 255 255 255 mypic.pic: เพิ่มกรอบสีขาว 10 พิกเซล
resize(1)ใช้ขยายหรือย่อภาพ- หากต้องการรักษาอัตราส่วนเดิม ให้ระบุเพียง
-xหรือ-yอย่างใดอย่างหนึ่ง - ตัวอย่าง:
resize -n -y 245 mypic.pic > mypic_resized.pic
- หากต้องการรักษาอัตราส่วนเดิม ให้ระบุเพียง
rotate(1)ใช้หมุนภาพทีละ 90 องศาได้rotate -r 90 my.pic > rotated.my.picrotate -ul > flipped.my.pic
การสร้างแคนวาสขนาดแม่นยำและกลยุทธ์การครอป
- หากต้องการขนาดที่แน่นอน เช่น 250x250 ให้สร้างภาพว่างก่อน แล้วใช้
resize(1)ทำให้ได้ขนาดที่ต้องการ จากนั้นจึงเปิดด้วยpaint(1)w empty_canvas.picresize -n -x 250 -y 250 empty_canvas.pic > empty_canvas_250x250.piccp empty_canvas_250x250.pic mypicture.picpaint mypicture.pic
paint(1)ไม่ได้ป้องกันการวาดเกินขอบแคนวาส และถ้าวาดเลยขอบ ภาพจะถูกขยายขนาดออกไป- มีทางเลือกอยู่สามแบบ
- ไม่ต้องสนใจเส้นที่เลยขอบ แล้วค่อยครอปตามการคำนวณทีหลัง
- เพิ่มระยะขอบสำรองอย่างสม่ำเสมอก่อนเริ่มงาน แล้วค่อยลบออกเมื่อเสร็จ
- ทำเครื่องหมายสำหรับครอปไว้ที่มุม แล้วค่อยครอปภายหลัง
crop -r a b c dใช้ครอปโดยอ้างอิงพิกัดสัมบูรณ์ของภาพ และสามารถดูพิกัดได้ด้วยdd -bs 128 -count 1- วิธีใช้ระยะขอบ เช่น เพิ่มขอบสีแดง 25 พิกเซลให้กับแคนวาสสีขาว 250x250 ก่อนทำงาน แล้วเมื่อเสร็จค่อยใช้
crop -i 25เพื่อตัดออก จะได้ผลลัพธ์ขนาด 250x250 ที่แม่นยำ
การลอกภาพและพาเลต
- สามารถนำภาพจากอินเทอร์เน็ตมาแปลงเป็นฟอร์แมตของ 9front แล้วทำให้สว่างขึ้นด้วย
picoเพื่อใช้ลอกเส้นในpaint(1)ได้- ตัวอย่าง:
hget http://img.triapul.cz/fahwui.jpg | jpg -c9 > to.trace.pic - ใน
picoใช้z == 3 ? Z : (im + Z) / 2เพื่อทำให้ภาพสว่างขึ้น
- ตัวอย่าง:
- ใน
paint(1)สามารถลากเส้นตามด้วยสีเฉพาะอย่าง HotPink แล้วใช้picoให้เหลือเฉพาะสีนั้น ส่วนที่เหลือเปลี่ยนเป็นสีขาวได้ - แหล่งข้อมูลเรื่องพาเลตคือ git.sr.ht/~amavect/makeu
การส่งออกและแชร์ภายนอก
- ภาพที่วาดบน 9front โดยพื้นฐานแล้วเป็นพิกเซลอาร์ต จึงแนะนำให้แปลงเป็น PNG
- สรุปว่า PNG จะเล็กกว่า JPG เสมอ คมชัดกว่า และแสดงผลเหมือนที่เห็นใน
paint(1) - ฟอร์แมตอื่นอย่าง PNG หรือ JPG ไม่สามารถจัดการโดยตรงใน
paint(1),crop(1),vcrop(1)ได้ แต่สามารถแสดงผลด้วยpage(1) - หากไฟล์ต้นฉบับหายไป ก็ยังสามารถแปลง PNG กลับเป็นฟอร์แมตของ 9front เพื่อแก้ไขต่อได้
png -c9 my_picture.png > my_picture.pic
- วิธีนำผลงานไปยังอุปกรณ์อื่นมีได้ตั้งแต่ง่ายไปจนซับซ้อน
- เปิดด้วย
page(1)แล้วถ่ายหน้าจอด้วยโทรศัพท์มือถือ - เสียบไดรฟ์ USB แบบ FAT แล้วคัดลอกไปยัง
/shr/sdS0M3TH1NG - ส่งไปยังคอมพิวเตอร์ Unix ด้วย
sshfs(4) - เชื่อมต่อจากคอมพิวเตอร์ Unix ด้วย drawterm แล้วคัดลอกไปยัง
/mnt/term/some/where - โพสต์ลง snac ด้วย
mothra(1) - ส่งอีเมลถึงตัวเองจากเครื่อง 9front
- ส่งผ่าน
sshfs(4)ไปยังเครื่องเสมือนภายใน 9front - คัดลอกขึ้นเว็บเซิร์ฟเวอร์ของ 9front แล้วดาวน์โหลดจากอุปกรณ์อื่น
- เปิดด้วย
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
พิมพ์จาก Mothra บน 9front
บางทีความแปรผันเล็กน้อยตามธรรมชาติอาจทำให้มันดูดีกว่าเส้นแบบ Bresenham ก็ได้
อย่างน้อยก็ยังดีที่ไม่ได้วางวงเวียนลงบนผิวแท็บเล็ตโดยตรง แต่ใช้บนกระดาษไขแทน
แต่ส่วนใหญ่เป็นปัญหาที่หลีกเลี่ยงได้ถ้ารู้ตัว ดังนั้นจึงขอแนะนำอย่างมากให้ใช้ ไกด์ทางกายภาพ มากกว่าความแม่นยำแบบประดิษฐ์
ถ้าเอาด้านเข็มปักลงในชิ้นจุกไวน์คอร์ก ก็น่าจะใช้งานได้ดี :^)