พี่แสนเคยบอกไว้มานานแล้วว่า เวลาย่อรูปเนี่ยเราไม่ควรย่อลงไปให้ได้ขนาดในทันที เช่น จาก 100% ไปเป็น 50% เราคววรจะแบ่งการย่อทีละนิดๆจาก 100% ไปเป็น 75% แล้วค่อยย่อจาก 75% ให้ได้ 50% หลังการย่อแต่ละครั้งให้ทำ unsharp-mask ด้วยจะทำให้ภาพคมขึ้นและดูสวยงาม
My brother SAN told me long time, when I have to resize, I should not resize to aspect ratio immediately such as 100% to 50%. I have to resize little by little from 100% to 75% then resize from 75% to 50 . Then after each resize process, it should be applied unsharp-mask filter. I will make more sharpen.
ผมก็เลยเขียนเพิ่มให้มันเป็นการแบ่งครั้งที่จะทำการ resize ได้ดังนี้
SHARPEN.times do
nphoto = photo.resize(NEWSIZE**(1.0/SHARPEN))
photo = nphoto.unsharp_mask
end
ดูได้จากภาพตัวอย่าง ได้ที่ multiply
Posted by Revolution
Wed, 10 Sep 2008 16:01:23 GMT
Posted in Gerneral, ruby | Tags photo, process, rmagick, ruby, sharpen | no comments | no trackbacks
จากครั้งที่แล้วผมอยากจะเขียน ruby สักอันไว้ทำการ stamp ลายเซ็นพร้อมค่า exif ลงในรูป จากการลองเขียนเป็น thread แล้วปรากฏว่าไม่ค่อยมีประโยชน์เท่าไหร่กลับกลายเป็นว่ามี overhead ขึ้นมาเพียบและก็ทำงานไม่ครบได้ทุก core ที่มี งานส่วนใหญ่ในการทำงานเกี่ยวกับภาพนี่จะเป็นในด้านคำนวนซะเยอะ เลยเขียนเป็นลักษณะ fork ออกมาจะดีกว่า
พอลองได้เขียนก็ได้แนวคิดมา 2 แบบ คือ
- ทำงานแบบเป็น lot คือทำพร้อมกันที่ละเท่าๆกัน แล้วรอให้เสร็จหมด ค่อยเริ่ม lot ต่อไป แบบนี้ถ้ามี process ใน lot เสร็จก่อนเพื่อนก็ต้องรอ
- แบบที่สองคือเริ่มทำงานให้เต็มตามที่เรากำหนด ถ้า process ไหนเสร็จก่อนก็เอา process ใหม่มา run ได้เลย แบบนี้จะทำให้การทำงานต่อเนื่อง
แบบนี้คือการทำงานแบบเป็น Lot
NUMFORK = 2
getImg = Dir['*.jpg','*.JPG','*.Jpg','*.jpeg'].sort.reverse
Dir.mkdir("stamped") if !File.exist?("stamped")
numFork = 0
while !getImg.empty?
numFork = numFork + 1
photo = getImg.pop
Process.fork{stampit(photo)}
if numFork == NUMFORK
Process.waitall
numFork = 0
end
end
Process.waitall
ส่วนแบบนี้คือการทำงานแบบต่อเนื่อง
NUMFORK = 2
getImg = Dir['*.jpg','*.JPG','*.Jpg','*.jpeg'].sort.reverse
Dir.mkdir("stamped") if !File.exist?("stamped")
numFork = 0
while !getImg.empty?
numFork = numFork + 1
photo = getImg.pop
Process.fork{stampit(photo)}
if numFork >= NUMFORK
Process.wait
numFork = numFork - 1
end
end
Process.waitall
อย่างนี้ก็สบายใช้งานคุ้มทุก core
Posted by Revolution
Thu, 04 Sep 2008 16:29:53 GMT
Posted in ruby, linux | Tags fork, photo, process, ruby, thread | no comments | no trackbacks
วิธีการแปลงไฟล์จาก .nef ซึ่งเป็น raw จาก nikon ไปเป็น jpg ทำได้โดยติดตั้ง ufraw ลงบนเครื่อง หลังจากนั้นเปิด program เลือกภาพ ตอนแรกๆ สีจะดูจืดมากๆ เป็นเพราะ color profile ของรูปไม่ถูกต้อง โดน default เป็นค่า sRGB ก็ให้ทำการ download ค่าสีที่ถูกต้องจากหน้าเวบของ ufraw ได้เลยเลือกปรับแต่งสีให้โดนใจ แต่ส่วตัวผมใช้ Input profile ของ nikon D80 + Color Matrix, output ใช้ sRGB + intent Perceptual, Display ใช้ sRGB + intent Disable soft proofing
หลังจากนั้นก็ save แล้วมันจะสร้าง .ufrawrc ไว้ที่ home ของเรา เหมือนเป็นค่าที่เราตั้งเอาไว้ หลังจากนี้ถ้าจะทำการ convert ที่หลายๆไฟล์ ก็ทำไม่ยากแล้วโดยเรียก
$ ufraw-batch *.nef --out-type=jpeg --compress=100 --out-path=./jpg --silent --overwrite
แต่ถ้าขยันๆก็แปลงไปปรับภาพไปทีละรูปแล้วกัน หุห
Posted by Revolution
Mon, 11 Aug 2008 10:25:05 GMT
Posted in Gerneral, linux | Tags D80, linux, nikon, photo, ufraw | no comments | no trackbacks
$ mogrify -resize 50% -path newdir/ *.jpg
Posted by Revolution
Mon, 11 Aug 2008 10:19:34 GMT
Posted in linux | Tags linux, magick, photo | no comments | no trackbacks
หลังจากที่ได้ D80 มาสมใจอยาก เห็นหลายๆคนเวลาแสดงรูปจะมีการแสดงความเป็นเจ้าของโดยใส่ลายน้ำหรือใส่ข้อมูล exif หรือลายเซ็นไว้ ก็เลยอยากจะทำมั่ง ใน Photoshop ก็สามารถเขียน script(java script) ให้ทำทีละหลายๆรูปได้ หรือจะใช้ ACDSee ก็ทำได้ ส่วนสำหรับบน Linux ไม่ค่อยมีข้อมูลเท่าไหร่ แต่ Tools และ Libs เพียบ เลยตกงว่าจะออกกำลังเขียน ไหนๆก็ไหนๆ แล้วเขียนด้วย ruby ซะเลย นี่เป็น version ใช้เอง แต่ก็สามารถเขียนให้ดีกว่านี้เพื่อเอาไปใช้กับงานอื่นๆได้ code License GPL2
After I got D80, I saw many people show up their photos with a water mark, signature, exif data. I think that I have to do same way. Photoshop can do with a script, ACDSee can do also but Linux have no idea about that ( I may not know). By the way ,Linux come wiht many tools and Libs so I make a decision to write a ruby script for do that. This code is under GPL2 License. This version is for my own purpose, it may not be well design.
Requirement: Ruby 1.8.6, RMagick
Usage: run script at same Photo Directory, script will generate a directory "stamped" and file name is "stamped-
.jpg"
Posted by Revolution
Wed, 06 Aug 2008 10:18:16 GMT
Posted in ruby, linux | Tags linux, photo, ruby | no comments | no trackbacks
Posted by Revolution
Wed, 23 Jul 2008 06:01:00 GMT
Posted in Gerneral, travel | Tags D80, nikons, photo | no comments | no trackbacks
Posted by Revolution
Wed, 23 Jul 2008 05:57:06 GMT
Posted in Gerneral, travel | Tags D80, nikons, photo | no comments | no trackbacks
วันนี้ไปถอย D80 มาพร้อมเลนส์ 18-70 mm f3.5 เกือบไ่ได้ซะแล้ว แต่ที่สำคัญ หลังจากนี้ต้องปั้มเงิน เสาร์นี้จะไปลองของซะหน่อยที่เมืองโบราณ สมุทรปราการ DSLR มันทำให้เล่นเทคนิคได้เยอะขึ้นเลย หุหุ งั้นก็ถึงเวลาที่จะเขียน module ไว้ up รูปหรือจะไปฝากที่ picasa ดี แต่ที่แน่ๆ ไม่ใช้ multiply หรอกนะ ชาร์ตแบตซักคืนแล้วนอนก่อนละ
Today I have brought Nikons D80 with Lens 18-70 f3.5. I'm so happy with this camera. By the way I have to start collect money. This Saturday, I may go to Immitate Old Town at SamutPrakarn to shot with D80. DSLR make me easy to play with a technique. So it's time to make a module for upload photo or save it at Picasa (i'm not use a Multiply even i have account)
Good Night
P.S. Thank you Ja to make dream come true.
Posted by Revolution
Tue, 08 Jul 2008 17:15:40 GMT
Posted in Gerneral | Tags lens, nikons, photo | no comments | no trackbacks