$draw->setFontSize(52); //设置文字大小$draw->setFont("simhei.ttf"); //设置字体$draw->setStrokeWidth (2); 设置描边大小
$draw->setStrokeColor ("black"); //设置描边颜色那么如何设置描边位移呢?
如果直接这样用的话,描边会在文字内部,用过PS描边的都明白。我要实现的是在文字外部描边

解决方案 »

  1.   

    郁闷。没人解答,该散分了。
    我目前的解决办法是:创建相同的两个图层,然后合并,其中一个图层的有描边,在下面一层,另一个图层没有描边,在上层。这样就变相的设置了外部描边。
    哈哈。代码:/* Create a new imagick object */
    $im = new Imagick();/* Create new image. This will be used as fill pattern */
    $im->newPseudoImage(50, 50, "gradient:red-red");/* Create imagickdraw object */
    $draw = new ImagickDraw();/* Start a new pattern called "gradient" */
    $draw->pushPattern('gradient', 0, 0, 50, 50);/* Composite the gradient on the pattern */
    $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);/* Close the pattern */
    $draw->popPattern();/* Use the pattern called "gradient" as the fill */
    $draw->setFillPatternURL('#gradient');/* Set font size to 52 */
    $draw->setFontSize(72);$draw->setFont("simhei.ttf");$draw->setStrokeWidth (20);$draw->setStrokeColor ("#bb0000");/* Annotate some text */
    $draw->annotation(150, 150, "Hello World!");
    //注意以上annotation的前面两个参数,表示X,Y左边。最好不要设置为0,如果为0且文字比较大的时候(我的72px),在修剪画布时,会剪掉一部分文字。呵呵。不信自己试。
    /* Create imagickdraw object */
    $draw2 = new ImagickDraw();/* Start a new pattern called "gradient" */
    $draw2->pushPattern('gradient', 0, 0, 50, 50);/* Composite the gradient on the pattern */
    $draw2->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);/* Close the pattern */
    $draw2->popPattern();/* Use the pattern called "gradient" as the fill */
    $draw2->setFillPatternURL('#gradient');/* Set font size to 52 */
    $draw2->setFontSize(72);$draw2->setFont("simhei.ttf");/* Annotate some text */
    $draw2->annotation(150, 150, "Hello World!");
    //$draw->annotation(20, 50, "Hello World!");
    /* Create a new canvas object and a white image */$canvas = new Imagick();$canvas->newImage(800, 300, "black");
    $canvas->paintfloodfillimage('transparent',2000,NULL,0,0);//创建第一个图层,带描边的.
    $canvas->drawImage($draw);
    //将第二个没有描边的图层和第一个图层合并
    $canvas->drawImage($draw2);
    //修剪多余的空白区域
    $canvas->trimImage(0);$canvas->setImageFormat('png');/* Output the image */
    header("Content-Type: image/png");
    echo $canvas;