1 คะแนน โดย GN⁺ 3 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สรุปขั้นตอนการวาดภาพทั้งหมดบน 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 ได้ด้วยคำสั่งต่อไปนี้
  • คำอธิบายที่เกี่ยวข้องอยู่ที่ 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.pic
    • rotate -ul > flipped.my.pic

การสร้างแคนวาสขนาดแม่นยำและกลยุทธ์การครอป

  • หากต้องการขนาดที่แน่นอน เช่น 250x250 ให้สร้างภาพว่างก่อน แล้วใช้ resize(1) ทำให้ได้ขนาดที่ต้องการ จากนั้นจึงเปิดด้วย paint(1)
    • w empty_canvas.pic
    • resize -n -x 250 -y 250 empty_canvas.pic > empty_canvas_250x250.pic
    • cp empty_canvas_250x250.pic mypicture.pic
    • paint 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 ความคิดเห็น

 
GN⁺ 3 시간 전
ความคิดเห็นจาก Lobste.rs
  • ผมรู้สึกเสมอว่า Plan 9 และ 9front มีเสน่ห์ มาก และอารมณ์ขันของ 9front ก็ทำให้นึกถึงเว็บยุคเก่า :) อันนี้ก็ไม่ใช่ข้อยกเว้น
    • เป็น ระบบที่สบายใจ
      พิมพ์จาก Mothra บน 9front
  • การใช้ไม้บรรทัดลากเส้นตรงบนแท็บเล็ตวาดรูปมีความเป็น ความโกลาหลที่น่าเพลิดเพลิน แบบแปลก ๆ อยู่ อธิบายยากว่าทำไมมันถึงแย่ หรือจริง ๆ แล้วมันแย่หรือเปล่าก็ยังไม่แน่ใจ
    บางทีความแปรผันเล็กน้อยตามธรรมชาติอาจทำให้มันดูดีกว่าเส้นแบบ Bresenham ก็ได้
    อย่างน้อยก็ยังดีที่ไม่ได้วางวงเวียนลงบนผิวแท็บเล็ตโดยตรง แต่ใช้บนกระดาษไขแทน
    • ถ้าวาดช้า ๆ โดยเฉพาะ ก็มีแนวโน้มจะเกิด คลื่นประดิษฐ์ ได้พอสมควร
      แต่ส่วนใหญ่เป็นปัญหาที่หลีกเลี่ยงได้ถ้ารู้ตัว ดังนั้นจึงขอแนะนำอย่างมากให้ใช้ ไกด์ทางกายภาพ มากกว่าความแม่นยำแบบประดิษฐ์
    • วงเวียนสมัยเรียน สามารถเปลี่ยนด้านที่ใช้วาดเป็นปากกาอะไรก็ได้
      ถ้าเอาด้านเข็มปักลงในชิ้นจุกไวน์คอร์ก ก็น่าจะใช้งานได้ดี :^)
  • @pmjv ถ้าสมมติว่า memeplex ของ triapul.cz กับ stanleylieber.com เป็นของคุณทั้งคู่... แล้วคุณเอาเวลามาจากไหนกันแน่?!
    • ไม่ใช่คนเดียวกันทั้งคู่!