在PHP中使用Imagick将图片包装在圆柱体上

由于某些日子,我会尝试使用Imagick和PHP将图像包裹在圆柱体上(后来生成带有单个图片的杯子的预览图片)。我当前的解决方案基于IM文档:http://www.imagemagick.org/Usage/mapping/

  convert rose: -background black -gravity south -splice 0x8 \
          \( +clone -sparse-color barycentric '0,0 black 69,0 white' \) \
          \( -clone 1 -function arcsin 0.5 \) \
          \( -clone 1 -level 25%,75% \
                 -function polynomial -4,4,0 -gamma 2 \
                 +level 50%,0 \) \
          -delete 1 \
          -virtual-pixel black  -define compose:args=17x7 \
          -compose Displace  -composite   rose_cylinder.png

我正在尝试在PHP Imagick函数中转换此命令,但结果不是我期望的。

那是我的代码:

$clondedOriginal = clone $img;
$clondedOriginal->setBackgroundColor("none");
$clondedOriginal->setGravity(Imagick::GRAVITY_SOUTH);

$mapBase = new Imagick();
$mapBase->newPseudoImage($clondedOriginal->getImageWidth(),$clondedOriginal->getImageHeight(),"canvas:white");
$mapBase->sparseColorImage(Imagick::SPARSECOLORMETHOD_BARYCENTRIC,[0,1,$mapBase->getImageWidth(),1]);
$mapBase->writeImage($dir . "/testBase.png");

$xMap = clone $mapBase;
$xMap->functionImage(Imagick::FUNCTION_ArcsIN,[0.5]);
$xMap->writeImage($dir . "/testX.png");

$yMap = clone $mapBase;
$quantumLong = Imagick::getQuantumRange()['quantumRangeLong'];
$yMap->levelImage( 0.25 * $quantumLong,$yMap->getImageGamma(),0.75 * $quantumLong,Imagick::CHANNEL_ALL);
$yMap->functionImage(Imagick::FUNCTION_POLYNOMIAL,[-4,0]);
$yMap->levelImage(0.5 * $quantumLong,0);
$yMap->writeImage($dir . "/testY.png");

$clondedOriginal->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BLACK);
$clondedOriginal->setImageArtifact("compose:args","200x0");
$clondedOriginal->compositeImage($xMap,Imagick::COMPOSITE_DISPLACE,0);

$clondedOriginal->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BLACK);
$clondedOriginal->setImageArtifact("compose:args","0x200");
$clondedOriginal->compositeImage($yMap,0);

$clondedOriginal->writeImage($dir . "/didit.png");

我尝试的每一步都生成Testimages。他们在这里

我希望有人可以帮助我。

fyplsl 回答:在PHP中使用Imagick将图片包装在圆柱体上

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2457834.html

大家都在问