繁体   English   中英

将Imagemagick命令转换为php imagick

[英]Convert Imagemagick command to php imagick

我需要将ImageMagick命令转换为PHP Imagick。 我尝试了几种组合,但是没有按预期工作。 该命令创建一条线,该线具有尖的边缘,并且边缘具有渐变。该命令是:

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`

感谢@ fmw42的命令

我尝试了以下代码:

$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);

请指出我要去哪里了

我对翻译的最佳猜测如下。 但是,这未经测试,我对Imagick也不太了解。

$redline = new Imagick();
$redline->newPseudoImage(300,1,'xc:red');
$grad = new Imagick();
$grad->newPseudoImage(1, 300, 'gradient:black-white');
$grad->rotateImage('white', 90);
$grad->solarizeImage(50*Imagick::getQuantumRange/100);
$grad->levelImage(0,1,50*Imagick::getQuantumRange/100);
$grad->whiteThresholdImage(50*Imagick::getQuantumRange/100);
$redline->compositeImage($grad, Imagick::COMPOSITE_COPYOPACITY, 0, 0);
$redline->writeImage("redline.png");

经过一些调整,@ fmw42答案对我有用。 正确的解决方案如下

$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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM