duanboshi1472 2019-08-14 03:58
浏览 206
已采纳

将Imagemagick命令转换为php imagick

I need to convert the ImageMagick Command to PHP Imagick. I have tried a few combinations but nothing worked as expected. The command creates a line with pointy edges and gradient at the edges The command is:

convert -size 300x1 xc:red \
\( -size 1x300 gradient: -rotate 90 -solarize 50% -level 0x50% -white-threshold 50% +write grad.png \) \
-alpha off -compose copy_opacity -composite red_grad.png`

thanks to @fmw42 for this command

I have tried the following code:

$line = new Imagick();
$line->newPseudoImage(300,1,'xc:red');
$shadow = new Imagick();
$shadow->newPseudoImage(1, 300, 'gradient:red-white');
$shadow->rotateImage('transparent', 90);
$shadow->solarizeImage(50);
$shadow->levelImage(0,50,50);
$shadow->whiteThresholdImage('white');
$shadow->setImageCompose(0);
$shadow->writeImage('grad.png');
$shadow->compositeImage($line, Imagick::COMPOSITE_MATHEMATICS, 0, 0);

Please point out where am I going wrong

  • 写回答

2条回答 默认 最新

  • dongtuoao7987 2019-08-14 23:56
    关注

    With a few tweaks, @fmw42 answer worked for me. The correct solution is given below

    $redline = new Imagick();
    $redline->newPseudoImage(1100,3,'xc:'.$chipColourPixel->getColorAsString());
    $grad = new Imagick();
    $grad->newPseudoImage(3, 900, 'gradient:black-white');
    $grad->rotateImage('white', 90);
    $grad->solarizeImage((int)ceil(50*Imagick::QUANTUM_RANGE/100));
    $grad->levelImage(0,1,50*Imagick::QUANTUM_RANGE/100);
    $redline->compositeImage($grad, Imagick::COMPOSITE_COPYOPACITY, 0, 0);
    $redline->writeImage("redline.png");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3