PHP-imagick:关闭图像中的开放区域
在以下代码之后:PHP-imagick:关闭图像中的开放区域,php,imagick,Php,Imagick,在以下代码之后: $im = new \Imagick('fu.png'); $im->thresholdimage(0.9, 127); 我得到了这个图像: 所以我需要关闭开放区域。 当我复制以下代码时: $im = new \Imagick('fu.png'); $im->thresholdimage(0.9, 127); $canvas = $this->getCharacterOutline(); $kernel = \ImagickKernel::fromB
$im = new \Imagick('fu.png');
$im->thresholdimage(0.9, 127);
我得到了这个图像:
所以我需要关闭开放区域。
当我复制以下代码时:
$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
我不知道如何使用它,我从来没有见过这样的东西,我确信这不是一个逻辑思考的问题,而是确切地知道该怎么做,否则你就完蛋了
请帮忙
更新:
正如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();
我不知道我在做什么,也不知道这狗屎到底该做什么。。。我遇到了一个错误,C…请改为这样做,因为
getCharacterOutline
是一个独立函数,不在类中
已更新
$canvas = getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
header("Content-Type: image/png");
echo $canvas->getImageBlob();
$此
引用当前对象或类。这就是为什么会出现错误,因为您告诉PHP从当前对象或类中查找getCharacterOutline
函数,而该对象或类不是您的代码。再次查看此链接并查看页面底部的示例26。我更新了问题。。你能发布完整的代码吗?我真的对它感到厌倦了,只需从这个$canvas=$this->getCharacterOutline()中删除$this->
和echo$canvas
而不是$im
如果这解决了您的问题@AnneSchwarz请投票或将其标记为正确谢谢!)否:PHP解析错误:语法错误,意外的“private”(T_private)。。。当我从私有函数getCharacterOutline()中删除private时,它仍然忘记了private
部分。删除私有文件后你得到了什么?现在是:“未找到类'ImagickKernel'”我需要从中下载这些垃圾吗?如果是:全部还是仅ImagickKernel.php(仅为1,5kb wtf)?