【发布时间】:2017-01-10 19:12:43
【问题描述】:
后面的代码:
$im = new \Imagick('fu.png');
$im->thresholdimage(0.9, 127);
我收到这张图片:
所以我需要关闭开放区域。 当我从http://phpimagick.com/Imagick/morphology?morphologyType=9 复制代码时:
$im = new \Imagick('fu.png');
$im->thresholdimage(0.9, 127);
$canvas = $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
header("Content-Type: image/png");
echo $im->getImageBlob();
我收到错误:PHP 致命错误:在不在对象上下文中时使用 $this。
我不知道如何使用它,我从未见过类似的东西,我确信这不是逻辑思维问题,而是确切地知道该怎么做,否则你就是 f* **编辑。
请帮忙!
更新:
正如 Roljhon 解释的那样,我需要使用 getchar.. 函数,所以我这样做了:
private function getCharacterOutline()
{
$im = new \Imagick('fu.png');
$im->thresholdimage(0.9, 127);
$character = new \Imagick();
$character->newPseudoImage(
$im->getImageWidth(),
$im->getImageHeight(),
"canvas:white"
);
$canvas = new \Imagick();
$canvas->newPseudoImage(
$im->getImageWidth(),
$im->getImageHeight(),
"canvas:black"
);
$character->compositeimage(
$im,
\Imagick::COMPOSITE_COPYOPACITY,
0, 0
);
$canvas->compositeimage(
$character,
\Imagick::COMPOSITE_ATOP,
0, 0
);
$canvas->setFormat('png');
return $canvas;
}
$canvas = $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
header("Content-Type: image/png");
echo $im->getImageBlob();
我不知道自己在做什么,也不知道这个垃圾到底应该做什么......我遇到了错误......
【问题讨论】:
-
$this指的是当前对象或类。这就是为什么你会收到一个错误,因为你告诉 PHP 从当前对象或类中找到getCharacterOutline函数,而不是你的代码。再次查看此链接phpimagick.com/Imagick/morphology?morphologyType=9 并查看页面底部的示例 26。 -
我更新了问题..你能发布整个代码吗?我真的厌倦了它