การสร้างรูปภาพด้วย PHP จะให้เป็นภาษาไทยได้งัยครับ ใครทราบช่วยหน่อยครับ ตอนนี้กำลังหาคำตอบอย
$pic = "modules/".$module_name."/images/certificate.jpg"; //รูปภาพขนาด 900x640
$string1 = "ข้อความที่ 1";
$string2 = "ข้อความที่ 2";
$string3 = "ข้อความที่ 3";
$string4 = "ข้อความที่ 4";
$im = imagecreatefromjpeg("$pic"); // ตำแหน่งรูปภาพ
$color = imagecolorallocate($im, 000,000,000); // สีของข้อความ
$size = GetimageSize("$pic");
$width = $size[0] ;
$px2 = ( $width - strlen($string2) ) / 2 ; // ตำแหน่งเริ่มต้น
$px3 = ( $width - strlen($string3) ) / 3 ; // ตำแหน่งเริ่มต้น
$font = "modules/".$module_name."/images/laith.ttf"; //ชนิดของฟอนท์
imagestring($im, 900, 750, 60, $string1, $color); //ตำแหน่งข้อความ1
imagettftext($im, 36, 0, $px2, 310, $color, $font, $string2); //ตำแหน่งข้อความ2
imagettftext($im, 18, 0, $px3, 360, $color, $font, $string3); //ตำแหน่งข้อความ3
imagettftext($im, 24, 0, 400, 446, $color, $font, $string4); //ตำแหน่งข้อความ4
imagejpeg($im);
imagedestroy($im);
แต่เศร้านิดหนึ่งรูปแบบฟอนท์ไทยไม่รับ 555555555555
ต้องขยาย
$string1 = "ข้ อ ค ว า ม ที่ 1";
$string2 = "ข้ อ ค ว า ม ที่ 2";
$string3 = "ข้ อ ค ว า ม ที่ 3";
$string4 = "ข้ อ ค ว า ม ที่ 4";
ถึงจะพอใช้ได้แฮะ
หาต่อดีกว่าเรา???????
ใครช่วยได้ช่วนต่อหน่อยครับ
Date :
28 ก.ค. 2549 01:10:33
By :
i.kob
เก่งๆ ถามเองตอบเอง สร้างสรรค์ดีคับ 555
Date :
28 ก.ค. 2549 11:53:03
By :
-
ถึงเดี๋ยวนี้ผมยังรอคำตอบจากทุกท่านอยู่นะครับ
$font = "modules/".$module_name."/images/laith.ttf"; //ชนิดของฟอนท์
ภาษาไทยออกมาแล้วแต่ลักษณะของภาษาไทยเราคือ สระ วรรณยุกต์
ตอนนี้ภาษาไทยที่ทำได้เพิ่มเติมคือ
เปลี่ยนจาก
//imagettftext($im, 36, 0, $px2, 310, $color, $font, $string2); //ตำแหน่งข้อความ2
เป็น
for ( $i=0; $i<$count; $i++ ) {
$Ord = Ord($string2[$i]);
$Chr[$i] = Chr($Ord);
$fontWidth = imagefontwidth($Chr[$i]);
$fontHeight = imagefontheight($Chr[$i]);
$pxChr = imagecreate(strlen($Chr[$i]) * $fontWidth, $fontHeight);
$px2 = $px2 + $pxChr;
imagettftext($im, 36, 0, $px2, 310, $color, $font, $Chr[$i]);
}
ให้อ่าน ASi ก่อนแล้วค่อยเปลี่ยนเป็นไทย
ปัญหาก็คือ อย่างที่บอกไว้ข้างต้น สระ วรรณยุกต์ มีความกว้างของตัวอักษรเท่ากับ พยัญชนะมันก็เลยเป็นอย่างงี้
Ex. ป ญ ห ก ค อ
ช่วยต่อนะให้เสร็จหน่อยครับเพราะเสาร์ - อาทิตย์ ต้องเรียนหนังสือ
Date :
28 ก.ค. 2549 14:01:58
By :
i.kob
ที่คุณต้องเขียนข้อความห่าง ๆ กัน เพราะ บางทีตัวหนังสือมันหายไปใช่มั้ยครับ ผมก็เป็นเหมือนกันนะถ้าเป็นแบบนั้น ......copy code ด้านล่างนี้ไว้ใช้กับ code รูปภาพของคุณ( ไม่ต้อง include นะ แล้วเคยมีปัญหาแต่ถ้าคุณ include แล้วไม่มีปัญหาก็แล้วไปละกัน)
<?
#==============================================
# Th2Uni v0.2 (TIS-620 encoder to Unicode)
#==============================================
# Information
# This is PHP function for covert thai encoding string to
# unicode that can use to show thai charactor
# in function ImageTTFText(). It works with tahoma.ttf
# micross.ttf and cordia.ttf.
#==============================================
# Example
# ImageTTFText ($im, 8, 0, 3, 15, $white, "tahoma.ttf",th2uni("thai language"));
#==============================================
GLOBAL $th2unimap,$th2unimap2,$th2unimap3,$th2unimap4,$th2unimap5;
$th2unimap = array(
'ก' => "ก", 'ข' => "ข", 'ฃ' => "ฃ", 'ค' => "ค", 'ฅ' => "ฅ", 'ฆ' => "ฆ", 'ง' => "ง",
'จ' => "จ", 'ฉ' => "ฉ", 'ช' => "ช", 'ซ' => "ซ", 'ฌ' => "ฌ", 'ญ' => "ญ", 'ฎ' => "ฎ",
'ฏ' => "ฏ", 'ฐ' => "ฐ", 'ฑ' => "ฑ", 'ฒ' => "ฒ", 'ณ' => "ณ", 'ด' => "ด", 'ต' => "ต",
'ถ' => "ถ", 'ท' => "ท", 'ธ' => "ธ", 'น' => "น", 'บ' => "บ", 'ป' => "ป", 'ผ' => "ผ",
'ฝ' => "ฝ", 'พ' => "พ", 'ฟ' => "ฟ", 'ภ' => "ภ", 'ม' => "ม", 'ย' => "ย", 'ร' => "ร",
'ฤ' => "ฤ", 'ล' => "ล", 'ฦ' => "ฦ", 'ว' => "ว", 'ศ' => "ศ", 'ษ' => "ษ", 'ส' => "ส",
'ห' => "ห", 'ฬ' => "ฬ", 'อ' => "อ", 'ฮ' => "ฮ", 'ฯ' => "ฯ", 'ะ' => "ะ", 'ั' => "ั",
'า' => "า", 'ำ' => "ำ", 'ิ' => "ิ", 'ี' => "ี", 'ึ' => "ึ", 'ื' => "ื", 'ุ' => "ุ",
'ู' => "ู", 'ฺ' => "ฺ", '฿' => "฿", 'เ' => "เ", 'แ' => "แ", 'โ' => "โ", 'ใ' => "ใ",
'ไ' => "ไ", 'ๅ' => "ๅ", 'ๆ' => "ๆ", '็' => "็", '่' => "่", '้' => "้", '๊' => "๊",
'๋' => "๋", '์' => "์", 'ํ' => "ํ", '๎' => "๎", '๏' => "๏", '๐' => "๐", '๑' => "๑",
'๒' => "๒", '๓' => "๓", '๔' => "๔", '๕' => "๕", '๖' => "๖", '๗' => "๗", '๘' => "๘",
'๙' => "๙", '๚' => "๚", '๛' => "๛");
$th2unimap2 = array( // สำหรับไม่มีสระอยู่ข้างหน้า
'่' => "",
'้' => "",
'๊' => "",
'๋' => "",
'์' => ""
);
$th2unimap3 = array( // สำหรับมี อักษรมีหางอยู่ข้างหน้า
'ิ' => "",
'ี' => "",
'ึ' => "",
'ื' => "",
'่' => "",
'้' => "",
'๊' => "",
'๋' => "",
'์' => "",
'ั' => "",
'ํ' => "",
'็' => ""
);
$th2unimap4 = array( // สำหรับมี 2 อักษรมีหางอยู่ข้างหน้า และ 1 ตัวอักษรข้างหน้าเป็นสระบน
'่' => "",
'้' => "",
'๊' => "",
'๋' => "",
'์' => ""
);
$th2unimap5 = array( // สำหรับ ญ ฐ ร่วมกับ สระอุ อู และ อฺ
'ญ' => "",
'ฐ' => "",
);
function th2unifix($sti) {
GLOBAL $th2unimap, $th2unimap2, $th2unimap3, $th2unimap4, $th2unimap5;
$sto = '';
$len = strlen($sti);
for ($i = 0; $i < $len; $i++) {
if ($th2unimap[$sti{$i}]) {
if ($i < $len && in_array($sti{$i}, Array('ญ','ฐ')) && in_array($sti{$i+1}, Array('ู','ุ','ฺ'))) {
$sto .= $th2unimap5[$sti{$i}];
}
elseif ($i > 1 && in_array($sti{$i-2}, Array('ป','ฝ','ฟ')) &&
($sti{$i-1} == 'ั' || ($sti{$i-1} >= 'ิ' && $sti{$i-1} <= 'ื')) &&
$th2unimap4[$sti{$i}]) {
$sto .= $th2unimap4[$sti{$i}];
}
elseif ($i > 0) {
if (in_array($sti{$i-1}, Array('ป','ฝ','ฟ')) && $th2unimap3[$sti{$i}])
$sto .= $th2unimap3[$sti{$i}];
elseif (!($sti{$i-1} == 'ั' || ($sti{$i-1} >= 'ิ' && $sti{$i-1} <= 'ื')) && $th2unimap2[$sti{$i}])
$sto .= $th2unimap2[$sti{$i}];
else
$sto .= $th2unimap[$sti{$i}];
}
else
$sto .= $th2unimap[$sti{$i}];
}
else
$sto .= $sti{$i};
}
return $sto;
}
function th2uni($sti) {
GLOBAL $th2unimap;
$sto = '';
$len = strlen($sti);
for ($i = 0; $i < $len; $i++) {
if ($th2unimap[$sti{$i}])
$sto .= $th2unimap[$sti{$i}];
else
$sto .= $sti{$i};
}
return $sto;
}
?>
ตัวแปร text ของผมคุณก็แทนที่ด้วยตัวแปร string ของคุณก็ได้
$text = th2unifix('ทดสอบการเขียนภาษาไทย php...');
// ใช้ tahoma font ซึ่งน่าจะมีกันนะ
$font = './TAHOMA.TTF';
//ตรงนี้ก็เพิ่มข้อความลงไปในรูปภาพปกติ
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
ลองดูละกันแต่ของผมใช้ได้นะ
Date :
28 ก.ค. 2549 17:00:52
By :
Ngokung
Th2Uni v0.2 (TIS-620 encoder to Unicode)
ผมนำมาใช้แล้วเหมือนกันแต่ก็ไม่ทำงาน
font TAHOMA.TTF ของผมใช้ไม่ได้แต่ใช้ laith.ttf ได้
แต่ก็ติดเรื่องเว้นวรรคเหมือนกัน
ผมลองเขียนโค๊ดใหม่เช็คเป็นตัวอักษรแล้วกำหนดขนาดให้ตามชนิดของตัวอักษรมันก็ OK นะ
แต่มันไม่ครอบคลุมทุกอักขระ
ไว้ผมจะส่งโค๊ดกับรูปที่ได้มาให้ดูอีกครั้งนะครับ
Date :
30 ก.ค. 2549 02:29:25
By :
i.kob
ใช้ font ที่เป็นไทยสิครับ ลงฟ้อนต์ MS Sans Serif หรือยังครับ
Date :
30 ก.ค. 2549 20:26:15
By :
goragod
ง่ายกว่านั้นครับ
ก่อนอื่นในส่วนของ header ต้องมี <meta http-equiv="Content-Type" content="text/html; charset=tis-620">
จากนั้นใช้ฟังก์ชั่น
$string4 = iconv("TIS-620", "UTF-8", $string4 );
จากนั้นใช้ฟังก์ชั่น imagestring เหมือนเดิม
imagettftext($im, 24, 0, 400, 446, $color, $font, $string4);
Cool
by sutee
Date :
23 ก.ค. 2551 15:15:50
By :
Sutee
ขอบคุณมากๆครับ
Date :
2011-12-05 01:28:15
By :
โจ
ไมไ่ด้นะครับ
Date :
2014-10-11 17:34:13
By :
ออฟ
Load balance : Server 00