2011-09-15 8 views
9

Làm cách nào để viết các ký tự tiếng Ả Rập hoặc tiếng Ba Tư vào một hình ảnh bằng cách sử dụng thư viện GD GD?Làm cách nào để viết các ký tự không phải tiếng Anh như ký tự tiếng Ả Rập hoặc tiếng Ba Tư vào một hình ảnh?

tức là "احسان"

+2

Bạn đang gặp phải vấn đề gì và bạn đang sử dụng mã nào? –

+0

@Bruce Aldridge chỉnh sửa của bạn thu hẹp phạm vi của câu hỏi. Làm cho nó ít hữu ích hơn trong tìm kiếm trên web. – andho

Trả lời

0

Thử sử dụng imagettftext.

<?php 
// http://localhost/test.php?text=احسان 

// test.php file 

$font = 'C:/Windows/Fonts/Arial.ttf'; 
$text = $_GET['text']; 

// [switch to right to left] 
// try comparing of using this block and not using this block 
$rtl = array(); 
for($i=0; $i<strlen($text); $i+=2) { 
    $rtl[] = substr($text, $i, 2); 
} 
$rtl = array_reverse($rtl); 
$rtl = implode($rtl); 
$text = $rtl; 
// [/switch to right to left] 

$im = imagecreatetruecolor(65, 35); 
$black = imagecolorallocate($im, 0, 0, 0); 
$white = imagecolorallocate($im, 255, 255, 255); 
imagefilledrectangle($im, 0, 0, 500, 100, $white); 
imagettftext($im, 12, 0, 10, 20, $black, $font, $text); 
header('Content-type: image/png'); 

imagepng($im); 
imagedestroy($im); 
+3

nó sẽ in ا ح س ا ن không phải احسان – shampoo

1

Sử dụng chức năng này để thông qua văn bản để imagettftext

<?php 
function revUni($text) { 

    $wordsArray = explode(" ", $text); 

    $rtlCompleteText=''; 
    for ($i = sizeOf($wordsArray); $i > -1; $i = $i-1) { 

     //$lettersArray = explode("|", str_replace(";|", ";", $wordsArray[$i])); 
     $lettersArray = explode(";", $wordsArray[$i]); 

     $rtlWord=''; 
     for ($k = sizeOf($lettersArray); $k > -1; $k = $k-1) { 
      if (strlen($lettersArray[$k]) > 1) { // make sure its full unicode letter 
       $rtlWord = $rtlWord."".$lettersArray[$k].";"; 
      } 
     } 

     $rtlCompleteText = $rtlCompleteText." ".$rtlWord; 

    } 

    return $rtlCompleteText; 
} 
?> 
0

Rõ ràng đảo ngược ký tự tiếng Ả Rập như một mảng chỉ sẽ không làm việc. Bạn cần tính đến glyph tiếng Ả Rập và thay thế từng chữ bằng biểu tượng Unicode chính xác. xem tại đây để có câu hỏi tương tự và giải pháp: Error while writting Arabic to image

0

Tôi đã viết một gói nhà soạn nhạc dựa trên thư viện, tôi không nhớ tên. Tôi đã sửa đổi thư viện và sửa một số lỗi mà nó có.

Bạn có thể tìm nguồn here. và bạn cũng có thể cài đặt nó với nhà soạn nhạc bằng cách chạy:

composer require quince/persian-gd 
  • Nó không có vấn đề với nhân vật Ba Tư
  • Đó là tùy
  • Chuỗi sẽ không tràn ra khỏi vải hình ảnh

Vui lòng kiểm tra và gửi báo cáo lỗi, gợi ý và ...

Cảm ơn