WPG2

1931
วันนี้นั่งปล้ำ gallery ของตัวเอง
ที่ setup ไว้นานแล้ว โดยลง Gallery2 เป็นตัวจัดการรูปภาพ (เป็น Open Source)
นั่งปรับแต่งค่าอะไรต่างๆ นานา รวมทั้ง Theme ด้วย

แล้วก็เลยลง WPG2 Plugin ของ WordPress
ที่เอาไว้เชื่อม Gallery2 เข้ากับ WordPress ได้แนบแน่นสนิทดู

ลองดูด้านข้างของบล็อกก็จะเห็น Random Image โผล่ขึ้นมา
แต่ว่าพอกดเข้าไปดูรูป หรือว่า Album ก็จะเละๆ หน่อย
เพราะ Theme ของ Gallery2 ที่ใช้ ไม่เข้ากันกับ Theme ของ WordPress ที่ใช้อยู่เอาซะเลย

ไว้มีเวลาค่อยปรับอีกที
ถ้าอยากดูรูป ขอให้เข้าไปดูตรงๆ ที่ http://gallery.oakyman.com/ ไปพลางๆ ก่อน

ป.ล. Gallery อื่นๆ ที่ข้าพเจ้าใช้อยู่

ปล้ำกับ WordPress

ตั้งแต่ Install WordPress ไป ทำการปลุกปล้ำมันไม่หลับไม่นอน ได้เรื่องดังนี้

  • ลง Akismet Plugin เอาไว้สู้กับ Spam (กันไว้ดีกว่าแก้)
  • ลง Code Markup Plugin เพราะมีปัญหากับการใช้ tag <code> กับ WordPress (กรณีที่ Code ยาวมาก) (Import Blog มาจาก Blog เก่าที่ Fotki)
  • ใช้ FeedBurner เพื่อเก็บสถิติว่ามีใครติดตาม Blog เรามั่ง
  • แก้ Style Sheet ให้แสดง Code ให้สวยๆ หน่อย (ให้เหมือนกับ Blog เก่าที่ Fotki)
  • แก้ Theme ที่ใช้ ลบข้อความเยิ่นเย้อด้านซ้ายของหน้า และแก้ให้แสดงเวลาที่ Post จริง
  • แก้ Main Index Template ให้แสดง Link Older Entries และ Newer Entries ที่ด้านล่างของหน้า (ไม่รู้เพราะ Theme ที่ใช้ไม่ Support หรืออย่างไร) โดยทำการเพิ่ม

    แต่ตอนแรกใช้แล้วไม่เวิร์ค ยังไงมันก็ไม่ยอมเปลี่ยนหน้าให้ เลยต้องมันอ่าน Query ชื่อ paged แบบ explicit โดยใช้ (ได้วิธีแก้มาจากกระทู้นี้)

  • แก้ให้หน้าแรกแสดงเต็มๆ ไม่ใช่แค่ย่อๆ (เปลี่ยนจากใช้ the_excerpt() เป็น the_content())

ลิงค์มีประโยชน์

  • WordPress Codex Documentation ของ WordPress มีประโยชน์มากพอควร
  • WordPress Wiki อันนี้ก็ดี แม้จะเก่าและล้าสมัยแล้ว (เค้าแนะนำให้ใช้ Codex)

ImageMagick Revisited

นั่งเขียน Perl Script ที่เรียกใช้ ImageMagick อีกที เพื่อจะย่อรูป/ทำกรอบ/แต่งรูปเล็กน้อย (Auto contrast/Unsharp Mask)
จริงๆ มันมี Module PerlMagick ให้ใช้ด้วย แต่ขี้เกียจดู
ตอนแรกว่าจะเขียนด้วย Batch file แต่ข้อจำกัดเยอะมาก

หา Option ใหม่ได้คือ

  • -equalize แต่ใช้แล้วสีเพี้ยน ยังหาวิธีแก้ไม่ได้
  • -gamma ใช้แล้วสว่างไปหน่อย
  • -encoding เซ็ตเป็น UTF-8 หรือ SJIS อะไรงี้ได้ แต่ภาษาไทยต้องใช้ UTF-8 เท่านั้น

เรื่องของเรื่องคืน ขี้เกียจมานั่งปรับ Photoshop ทีละอัน
แล้ว Action ใน Photoshop มันก็ไม่ยืดหยุ่นด้วย

Link อ้างอิงที่น่าสนใจ

ตัวโปรแกรมตั้งชื่อว่า batchframe.pl
คุณสมบัติคือ
– Normalize histogram
– ถ้าใช้ Option -eq ก็จัดการใช้ -equalize เวลาเรียก convert ของ ImageMagick ด้วย
– ย่อรูป
– Crop รูป
– Unsharp Mask
– ทำกรอบสีขาว
– มุมล่างขวาใส่ Copyright text
– ถ้าใช้ Option -text “any text” ที่มุมล่างซ้ายก็ใส่ custom text ด้วย

* Detect ได้ด้วยว่าเป็นรูปแนวตั้งหรือแนวนอน
** Setting อื่นๆ อย่างขนาดภาพที่ต้องการ หรือ Font นี่ แก้เองใน Script

#!/usr/bin/perl

#!/usr/bin/perl

# fix for Windows only
use File::Glob qw(:glob);
use POSIX qw(ceil floor);

$usage = "usage: batchframe.pl [-eq] [-lev black,white] [-gam gamma] [-sat saturation] [-nonorm] [-text \"Text\"] filename\n";

$equalize = 0;
$fullmajorsize = 1024;
$fullminorsize = floor($fullmajorsize * 3 / 4);
$borderratio = 2.5;
$inborder = 2;
$border = floor($fullmajorsize * 2.5 / 100);
$size = $fullmajorsize - ($border * 2);
$minorsize = $fullminorsize - ($border * 2);
$fontsize = floor($border * 0.75);
$border -= $inborder;
$type = "Bookman-Old-Style";
$outputdir = "edited";
$unsharp = $fullmajorsize * 0.500 / 100;

$norm = "-normalize";
$equalize = "";
$modulate = "";
$gamma = "";
$level = "";

while($#ARGV > 0) {
	if($ARGV[0] eq "-eq") {
		$equalize = "-equalize";
		shift @ARGV;
	} elsif($ARGV[0] eq "-nonorm") {
		shift @ARGV;
		$norm = "";
	} elsif($ARGV[0] eq "-text") {
		shift @ARGV;
		$text = shift @ARGV;
	} elsif($ARGV[0] eq "-sat") {
		shift @ARGV;
		$sat = shift @ARGV;
		$modulate = "-modulate 100,$sat";
	} elsif($ARGV[0] eq "-lev") {
		shift @ARGV;
		$level = shift @ARGV;
		$level = "-level $level";
	} elsif($ARGV[0] eq "-gam") {
		shift @ARGV;
		$gam = shift @ARGV;
		# pantip post = 1.2
		$gamma = "-gamma $gam";
	} elsif($ARGV[0] eq "-h") {
		print $usage;
		exit(0);
	}
}

if($#ARGV == 0 && $ARGV[0] =~ /^-/) {
	print $usage;
	exit(0);
}

if($#ARGV < 0) {
	print $usage;
	exit(0);
}

print "target size = ${fullmajorsize}x${fullminorsize}\n";
print "border = $border\n";
print "size (w/o border) = ${size}x${minorsize}\n";
print "font = $type $fontsize\n";
print "unsharp = $unsharp\n";
print "text = $text\n" if($text ne "");
print "saturation = $sat%\n" if($sat ne "");
print "do not apply -normalize\n" if($norm eq "");
print "apply -equalize\n" if($equalize ne "");
print "$level\n" if($level ne "");
print "gamma = $gam\n" if($gamma ne "");

if(! -e $outputdir) {
	mkdir $outputdir;
}

# Normal way to do
# foreach $_ (@ARGV) {

# fix for Windows only
foreach $_ (bsd_glob($ARGV[$#ARGV], GLOB_NOCASE)) {
	$in = $_;
	$out = $outputdir."\\".$in;

	$width = `identify -format "%w" $in`;
	chomp($width);
	$height = `identify -format "%h" $in`;
	chomp($height);

	#print "${width}x${height} ";
	if($width > $height) {
		#print "lanscape\n";
		$cropstring = " -crop ${size}x${minorsize}-0-0 ";
	} else {
		#print "portrait\n";
		$cropstring = " -crop ${minorsize}x${size}-0-0 ";
	}

	$convertcmd = "convert $in $norm $gamma $modulate $level $equalize -resize ${size}x$size $cropstring -unsharp $unsharp -bordercolor black -border $inborder -bordercolor white -border $border -gravity southeast -font $type -pointsize $fontsize -fill black -annotate 0x0+$border+2 \"© Oakyman - Issara Thienlikit\" -gravity southwest -annotate 0x0+$border+2 \"$text\" $out
";
	print "$in --> $out\n";
	`$convertcmd`;
}

เอาหละ เตรียม Upload รูปที่แต่งแล้วขึ้น Fotki