Skip to main content

ImageMagick

ทำ Carrier Logo อย่างง่ายด้วย ImageMagick

Submitted by ezybzy on

ได้เขียนบทความส่งไปที่ Siampod เรื่องเกี่ยวกับ ipcc แต่ไม่ได้กล่าวถึงวิธีทำ Carrier logo เลยเอามาต่อที่นี่แล้วกันเพื่อไม่ให้ยืดยาวเกินไป

ด้วยระบบการแสดงผลบน iPhone ทาง Apple แบ่ง Carrier logo ออกเป็นสองชนิดคือ ชนิดสำหรับหน้าจอพื้นใส (เช่นใน Springboard มีชื่อไฟล์ Default_CARRIER_ชื่อเครือข่าย.png) และชนิดสำหรับหน้าจอพื้นทึบ (เช่นใน Settings มีชื่อไฟล์ FSO_CARRIER_ชื่อเครือข่าย.png) ซึ่งมีขนาดความสูง 20px และไม่ควรมีความกว้างเกิน 80px หากเกินกว่านั้นเข้าใจว่าระบบจะสามารถเลื่อนเป็น marquee ให้ได้เพียงหนึ่งครั้งก่อนที่จะค้างอยู่ที่ความกว้าง 80px

ถ้านิยมโลโก้รูปภาพ เราก็เพียงแค่เอาโลโก้ของค่ายต่างๆ มาจัดให้อยู่บนพื้นที่ขนาดนี้ แต่สำหรับคนที่อยากจะทำโลโก้ที่มีเป็นข้อความเหมือนกับ Apple จะทำอย่างไรดี?

ก่อนอื่นก็ทดลองก่อนว่าใช้ฟอนต์อะไรดีขนาดเท่าไรดีสีอะไรดี เราก็ได้ข้อสรุปมาว่า ใช้ Helvetica ความหนาเป็นปกติ ขนาด 14 point สีขาวและดำ (ขึ้นกับประเภทการแสดงผล) ขั้นต่อไปคือเอาชื่อของ Carrier ไปวางบนไฟล์ภาพ เอ๊ะใช้โปรแกรมอะไรดีนะ??? เอา Photoshop แล้วกัน แต่เอ๊ะเราจะใช้โปรแกรมราคาหลายหมื่นเพื่อแก้รูปขนาดแค่นี้จริงหรือ? แล้วเราจะเล็งตำแหน่งการวางชื่อ Carrier ได้ทุกครั้งจริงเหรอ? แล้วถ้าเราต้องทำไฟล์รูปสำหรับหลายร้อย Carrier แบบ Apple ทาง Apple จะให้นักออกแบบมาเปิด Photoshop แก้ขนาดนี้เชียวหรือ???

ใช่ครับ Apple ก็คงไม่ได้ทำอย่างนั้นแน่ๆ ทุกครั้งที่มีการสร้าง ipcc ไฟล์พวกนี้ก็จะถูกสร้างขึ้นมาพร้อมๆ กันก่อนจะถูกจับรวมเป็นไฟล์ ipcc ให้เราใช้งานได้ง่ายๆ ผมไม่ทราบว่า Apple จะใช้ Tool ตัวไหนในการสร้างไฟล์รูปเหล่านี้ แต่ตัวที่ใช้งานง่ายๆ และพอจะเป็นไปได้ที่ Apple จะเลือกใช้ น่าจะเป็น ImageMagick ซึ่งเป็น Opensource และมีการผลิตขึ้นมาให้ใช้งานได้หลากหลาย Platform (ซึ่งรวมถึง Mac OS X)

จริงๆ ความสามารถหลักของโปรแกรมนี้คือการแต่งภาพครับ ใส่พวก effect ต่างๆ กับรูปภาพของเรา แปลงไฟล์ภาพได้ รวมถึงสามารถสร้างรูปภาพที่เป็นข้อความได้ ที่สำคัญคือใช้งานง่ายเพียงสั่งผ่าน Command line เท่านั้น ซึ่งจากคุณสมบัตินี้ก็ดูจะเป็นเรื่องที่เข้าท่าที่ทาง Apple จะเลือกใช้โปรแกรมนี้

ตัวที่ผมใช้งาน ผมใช้ตัวที่ถูกติดตั้งมาพร้อมกับ TeXLive 2009 แหล่งอื่นๆ นอกจากนี้เช่น Fink หรือ Macports หรือจากตัวเว็บของโครงการนี้เอง แต่ปัญหาที่พบคือ ผมพบ Warning ที่ไม่แน่ใจว่าจะแก้ไขมันอย่างไร ซึ่งค่อนข้างทำให้รำคาญพอสมควรว่าตกลงเราจะได้ไฟล์ออกมาไหมเนี่ย แต่สุดท้ายเพียงเพิ่ม Arugument ชื่อ quiet เข้าไปก็ทำให้ข้อความเตือนเหล่านั้นหายไป รวมถึงผมไม่สามารถใช้ฟอนต์ Helvetica ได้ทันทีจากฟอนต์ของระบบเนื่องจากยังไม่มีการ Mapping ให้ ทำให้ต้องสกัดเอาฟอนต์ตัวนี้ออกมาจาก iPhone OS อีกที

สำหรับรูปแบบการใช้งานคำสั่งผมจะไม่อธิบาย (ให้ลองอ่านจาก Tutorial ในเว็บได้เลย) แต่มาดูคำสั่งที่ผมใช้เลยแล้วกัน

convert -quiet -size x20 -background transparent -fill black -font Helvetica.ttf -pointsize 14 -gravity center \
    label:'CarrierName' Default_CARRIER_CarrierName.png
convert -quiet -size x20 -background transparent -fill white -font Helvetica.ttf -pointsize 14 -gravity center \
    label:'CarrierName' FSO_CARRIER_CarrierName.png

ตรงชื่อไฟล์ (Argument ท้ายสุดของคำสั่ง) หากต้องการใส่เครื่องหมายพิเศษหรือเว้นวรรคก็สามารถทำได้ตามรูปแบบที่ระบบปฏิบัติการเหมือน UNIX ทั้งหลายทำ (ใส่ \ ตามด้วยสิ่งที่ต้องการนั่นแหละ) คำสั่งแรกสร้างข้อความสีดำไว้ใช้สำหรับหน้าจอปกติที่แถบสถานะเป็นพื้นขาว ส่วนอีกคำสั่งสร้างข้อความสีขาวไว้ใช้สำหรับหน้าจอที่แถบสถานะเป็นสีใส ชื่อไฟล์ที่ตั้งเป็นแค่แนวทาง ไม่จำเป็นต้องตั้งตามแบบนี้ก็ได้ เพียงแต่ต้องไปแก้ไขเพิ่มเติมใน carrier.plist ให้ถูกต้องด้วย

ทีนี้ตอนลองก็พบว่าถ้าไม่ตั้ง gravity มันจะหลุดกรอบร่วงลงมาด้านล่างเลย ก็เลยตั้งค่านี้แล้วก็พบว่ามันออกมาพอดีเลย ยังมีจุดที่น่าสนใจอีกจุดคือ ในโลโก้ชื่อเครือข่ายจริงๆ จะมีเงาๆ บางอย่างด้วย (ทำเหมือนตัวเจาะหรือล้อมกรอบ) แต่ด้วยคำสั่งข้างต้นยังไม่สามารถทำให้เกิดข้อความในลักษณะดังกล่าวได้ พยายามปรับแต่งพอสมควร แต่ก็พบข้อผิดพลาดในคำสั่งใช้งาน เลยไม่นำมาเสนอในนี้

เพียงเท่านี้เราก็จะได้ Carrier logo ของค่ายโทรศัพท์มือถือที่เราต้องการแล้ว ในรูปแบบเดียวกันกับที่ Apple ใช้