zoukankan      html  css  js  c++  java
  • PHP Imagick文字加阴影(外发光)

    PHP Imagick文字加阴影(外发光)
    <pre>
    $canvas = new Imagick();
    $canvas->newImage(500, 200, 'white');
    $canvas->setImageFormat('png');

    $text = new Imagick();
    $text->newImage(500, 200, 'none');
    $text->setImageFormat('png');

    $draw = new ImagickDraw();
    $draw->setFillColor(new ImagickPixel('#f00'));
    $draw->setFontSize(50);
    $draw->annotation(100, 60, 'welcome');
    $text->drawImage($draw);

    $draw->setFillColor(new ImagickPixel('#fff'));
    $draw->setFontSize(50);
    $draw->annotation(100, 120, 'welcome');
    $text->drawImage($draw);

    $shadow_layer = $text->clone();
    $shadow_layer->setImageBackgroundColor(new ImagickPixel('#555'));
    $shadow_layer->shadowImage(80, 0.8, 0, 0);
    $shadow_layer->compositeImage($text, Imagick::COMPOSITE_OVER, 0, 0);
    $canvas->compositeImage($shadow_layer, imagick::COMPOSITE_DEFAULT, 0, 0);
    $canvas->writeImage("test_0.jpg"); //直接写入test_0.jpg文件
    header("Content-type: image/{$canvas->getImageFormat()}");
    echo $canvas->getImageBlob();
    </pre>

    ps:
    drawImage $text->drawImage($draw); 这个$draw是文字对象 $text可以是图片可以是空白画布
    setImageBackgroundColor 设置阴影颜色
    shadowImage 第一个参数是透明度0~255 第二个参数就是值越大就是扩散越大 第三和第四就是x和y的阴影位移
    compositeImage 这个是合并图片
    $shadow_layer->compositeImage($text, Imagick::COMPOSITE_OVER, 0, 0 ); //$text合并到$shadow_layer
    $canvas->compositeImage($shadow_layer, imagick::COMPOSITE_DEFAULT, 0, 0); //$shadow_layer 合并到$canvas

  • 相关阅读:
    记周日一次故障意外
    每周一坑-【3月第1周】
    关于计划任务的一个小需求-优化篇
    400篇博客的一个里程碑
    关于计划任务的一个小需求-实现篇
    关于计划任务的一个小需求
    微服务优雅停机研究
    NSUInteger设为负数
    Mac上运行第一个Flutter项目
    Vue filtersfilter、computed、methods、watch对比
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11872544.html
Copyright © 2011-2022 走看看