Posts

Showing posts with the label resize

สร้าง Bash Script ไว้ใช้เอง

Blog นี้จะมานำเสนอเทคนิคเล็กๆ น้อยๆ สำหรับคนที่ใช้ Terminal กัน ปกติเวลา Resize รูปทำยังไงครับ ใครมี Designer จัดการให้ก็สบายไป ใครไม่อยากเห็น Designer เหนื่อย ต้องการทำเอง ก็ตามมาเลย จากการอ่านครั้งนี้ จะเอาไปประยุกต์กับการใช้คำสั่ง Bash อะไรก็ได้นะครับ เป้าหมายของวันนี้คือผมจะสร้าง Command Line Application ที่จะย่อรูปจากขนาดใหญ่กว่าให้เลือกขนาด 96x96, 64x64, 32x32 เพื่อใช้กับ Tabbar บน iOS และตอนเรียกโปรแกรมนี้ขึ้นมาทำงานจะเรียกด้วยคำสั่งนี้ โดยโปรแกรมที่ใช้ในการจัดการรูปภาพคือ ImageMagick $ tabIconGenerator image.png newName เริ่มต้นด้วยการสร้างไฟล์ที่ไม่มี Extension ก่อน ผมสร้างด้วย vim นะ ใครใช้อะไรก็ตามสบายเลย $ vim tabIconGenerator จากนั้นก็เขียนคำสั่งที่ต้องการลงไป โดยเขียนหัวไฟล์ว่า #!/bin/bash เพื่อบอกว่าเราจะสั่งให้ Bash เป็นคนรันคำสั่งพวกนี้นะ #!/bin/bash convert $1 -resize 96x96 $2@3x.png convert $1 -resize 64x64 $2@2x.png convert $1 -resize 32x32 $2.png $1 และ $2 คือ Command Line Arguments ซึ่ง $0 จะเป็นคำสั่ง จากนั้นก็ Save ออกมา โดยปกติแล้วไฟล์ท...

[iOS Dev] Face Detection with Core Image (Part II)

Image
มาต่อกันนะครับ Blog ที่แล้วเราทำการ Detect ได้จุดของวัตถุต่างๆ ละ  คราวนี้เราจะทำการวาดกรอบของสิ่งที่เรา Detect ได้กัน ผลลัพธ์ที่ได้ก็ประมาณนี้นะ  ปัญหาแรกที่จะเกิดขึ้นและทำให้งงคือ Coordinates System ของ UIKit และ Core Image นั้นต่างกัน และทำให้ใครหลายคน (รวมทั้งตัวผมเอง) งง และเกิด Bug ไปอ่าน Entry นี้กันก่อนนะ :) [iOS Dev] UIKit and Core Image Coordinates System เราได้ทำการกะขนาดของ ปาก และ ตา ไว้ดังนี้ (โดยอ้างอิงจากขนาดของใบหน้า) จากนั้นผมก็จะทำการวาดกรอบของ Face Feature ต่างๆ ซึ่งนี่แแหละ เป็นเรื่องที่ยุ่งยาก เพราะจะวาดเลยก็ไม่ได้เนื่องจาก Coordinates System ไม่เหมือนกัน ตามที่กล่าวไปข้างต้น (Code ส่วนนี้เป็นส่วนหนึ่งของ - (void)faceDetection; ใน Part I) และเรื่อง Coordinates System ของ UIKit และ Core Image นั้นไม่เหมือนกัน จึงต้องทำการแปลงให้เรียบร้อยก่อน ซึ่งผมก็แยกเขียน method การแปลงจุดและกรอบออกมา ส่วนเรื่องการวาด ตอนแรกผมนั่งมึนว่าจะใช้อะไรวาดดี = =' ลองใช้ Quartz 2D แล้วสำหรับผมคงยากไป ... ไม่ชอบเลย เลยสดโดยใช้ UIView นี่แหละครับ ง่ายดี ...

[iOS Dev] Face Detection with Core Image (Part I)

Image
การทำ Face Feature Detection บน iOS นั้น ไม่ยากเลย เพราะมีของให้ใช้อยู่แล้ว พระเอกในงานนี้ก็คือ Core Image ซึ่งเป็น Library ที่ถูกบรรจุมาตั้งแต่ iOS 5 SDK และสิ่งที่เราใช้ในการ Detection ก็คือ CIDetector Class โดย CIDetector สำหรับการทำ Face Feature Detection จะสามารถ Detect ได้ 4 อย่าง นั่นคือ กรอบหน้า (Face Rectangle), ปาก (Mouth), ตาซ้าย (Left Eye) และ ตาขวา (Right Eye) ขั้นแรกก็จัดการสร้าง UIImageView และใส่ภาพที่ต้องการลงไป ** ก่อนที่จะใส่ภาพ เราควรจะย่อภาพให้เท่ากับขนาดของ UIImageView ซะก่อน เนื่องจาก Core Image จะใช้ขนาดต้นฉบับของภาพ ซึ่งไม่ตรงกับที่เราเห็นบน UIImageView แล้วจะทำให้การ Detect เกิดความผิดพลาด (Code ของการย่อภาพอยู่ใน Part II) ส่วนวิธีการทำ Face Detection ก็ไม่ยากเลยครับ ใช้ Code เพียงเท่านี้เอง แค่นี้เราก็จะได้ NSArray ของ CIFaceFeature Object มาใช้งานแล้วล่ะครับ ต่อไปเราจะมาวาดกรอบให้ใบหน้า, ปาก, ตาซ้าย และ ตาขวานะครับ ซึ่งผมตัดสินใจแยกออกไปอีก Blog (ผมกลัวคนอ่านตาลายกับ Code)