0

次のコードがあるとします。

$draw = new ImagickDraw(); // prep text
$draw->setFillColor('#00ff00');
$draw->setFontSize(12);
$draw->setStrokeWidth(4);
$draw->setStrokeColor(new ImagickPixel('#ff0000'));
// etc.

$image = new Imagick(); // prep image
// etc.

// add text to image
$image->annotateImage($draw, 10, 10, 0, 'Hello, World!');

そして、それが機能すると仮定しましょう (実際に動作します - ここでは省略しました)。たとえば、文字ごとにストローク幅を変更する簡単な方法はありますか?

のようなものを使用することを検討しています$image->queryFontMetrics($text, 'H'))が、もっと簡単な方法があるかどうか疑問に思いました。

ありがとう!

4

1 に答える 1

1
$draw = new ImagickDraw(); // prep text
$draw->setFillColor('#00ff00');
$draw->setFontSize(12);
$draw->setStrokeColor(new ImagickPixel('#ff0000'));
// etc.

$image = new Imagick(); // prep image
// etc.

// add text to image
$draw->setStrokeWidth(4);
$image->annotateImage($draw, 10, 10, 0, 'He');
$draw->setStrokeWidth(5);
$image->annotateImage($draw, 12, 10, 0, 'llo, ');
$draw->setStrokeWidth(6);
$image->annotateImage($draw, 15, 10, 0, 'Wor');
$draw->setStrokeWidth(7);
$image->annotateImage($draw, 18, 10, 0, 'ld!');

そのようなものは機能しますか、それとも不格好すぎますか? 文字列が常に同じで、 $x の寸法が正しい ( annotateImage() 関数の 2 番目のパラメーター) を把握していれば、うまくいく可能性があります。

于 2012-02-21T10:39:23.607 に答える