2017-02-23 9 views
0

私はimagemagickを使って画像にテキストを書いていますが、テキストボックスを真ん中に置く方法を見つけるのには苦労しています。imagemagickテキストを真ん中に設定

ボーナスポイントの場合、2番目のコマンドでオフセットする方法もあります。つまり、中央から50px右に移動します。これは、通常、画像を追加しない限り、テキストを中央に置きたいので、画像のスペースを確保する必要があるからです。

テキストとフォントサイズは可変ですが、それでも中央揃えにする必要があります。

これは私の現在のコードです:

<?php 
function process($inputdata) 
{ 
/* Create some objects */ 
$image = new Imagick(); 
$draw = new ImagickDraw(); 
$pixel = new ImagickPixel('gray'); 

/* New image */ 
$image->newImage(400, 300, $pixel); 

/* Black text */ 
$draw->setFillColor('black'); 

/* Font properties */ 
$draw->setFont('Bookman-DemiItalic'); 
$draw->setFontSize(30); 

/* Create text */ 
$image->annotateImage($draw, 10, 45, 0, $inputdata); 

/* Give image a format */ 
$image->setImageFormat('png'); 

/* Output the image with headers */ 
header('Content-type: image/png'); 
echo $image; 
return; 
} 

私は、このコマンドを追加しようとしたが、それがどんな効果を持っていないようでした:

$draw->setTextAlignment(\Imagick::ALIGN_CENTER); 

私は見つけることができる最も近い答えがthis oneあり、しかし、サイズを計算してそのように中央に配置しなければならないのは、ちょっと待たれているようです。

+0

どうsetGravityについて(Imagick :: GRAVITY_CENTER) – Bonzo

+0

@Bonzoこんにちは。私はそれを試みたが、それは動作していないようでした:( – Jimmy

答えて

1

これは私のために正常に動作します:

#!/usr/local/bin/php -f 
<?php 
    /* Create some objects */ 
    $image = new Imagick(); 
    $draw = new ImagickDraw(); 
    $pixel = new ImagickPixel('gray'); 

    /* New image */ 
    $image->newImage(400, 300, $pixel); 

    /* Black text */ 
    $draw->setFillColor('black'); 

    /* Font properties */ 
    $draw->setFontSize(30); 
    $draw->setGravity(Imagick::GRAVITY_CENTER); 

    /* Create text */ 
    $image->annotateImage($draw, 0, 0, 0, "Some funky text"); 

    /* Give image a format */ 
    $image->setImageFormat('png'); 
    $image->writeImage('result.png'); 
?> 

enter image description here

+0

パーフェクト、ありがとう – Jimmy

関連する問題