Imagick::morphology

(PECL imagick 3 >= 3.3.0)

Imagick::morphology β€” ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ядро, прСдоставлСнноС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ОписаниС

public function Imagick::morphology(
Β Β Β Β int $morphologyMethod,
Β Β Β Β int $iterations,
Β Β Β Β ImagickKernel $ImagickKernel,
Β Β Β Β int $channel = Imagick::CHANNEL_DEFAULT
): bool

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ядро, прСдоставлСнноС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

morphologyMethod

Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: ΠΎΠ΄Π½Π° ΠΈΠ· констант \Imagick::MORPHOLOGY_*.

iterations

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ для примСнСния морфологичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Как это примСняСтся, ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 1.

ImagickKernel

channel

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Convolve Imagick::morphology()

<?php
$imagick
= $this->getCharacter();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_GAUSSIAN, "5,1");
$imagick->morphology(\Imagick::MORPHOLOGY_CONVOLVE, 2, $kernel);
header("Content-Type: image/png");
echo
$imagick->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Correlate Imagick::morphology()

<?php
// Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ пиксСль Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΌ.
// НиТний ΠΏΡ€Π°Π²Ρ‹ΠΉ пиксСль Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±Π΅Π»Ρ‹ΠΌ
// На ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΌ всё Ρ€Π°Π²Π½ΠΎ.

$imagick = $this->getCharacterOutline();
$kernel = \ImagickKernel::fromMatrix(self::$correlateMatrix, [2, 2]);
$imagick->morphology(\Imagick::MORPHOLOGY_CORRELATE, 1, $kernel);
header("Content-Type: image/png");
echo
$imagick->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #3 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Erode Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_ERODE, 2, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #4 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Erode Intensity Imagick::morphology()

<?php
$canvas
= $this->getCharacter();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
$canvas->morphology(\Imagick::MORPHOLOGY_ERODE_INTENSITY, 2, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #5 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Dilate Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_DILATE, 4, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #6 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Dilate intensity Imagick::morphology()

<?php
$canvas
= $this->getCharacter();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
$canvas->morphology(\Imagick::MORPHOLOGY_DILATE_INTENSITY, 4, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #7 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Distance с ядром Chebyshev Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CHEBYSHEV, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
$canvas->autoLevelImage();
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #8 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Distance с ядром Manhattan Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_MANHATTAN, "5");
$canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
$canvas->autoLevelImage();
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #9 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Distance с ядром ocatagonal Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGONAL, "5");
$canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
$canvas->autoLevelImage();
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #10 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Distance с ядром Euclidean Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_EUCLIDEAN, "4");
$canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
$canvas->autoLevelImage();
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #11 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Edge Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_EDGE, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #12 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Open Imagick::morphology()

<?php
// Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ "Open" сглаТиваСт ΠΊΠΎΠ½Ρ‚ΡƒΡ€, округляя всС острыС Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈ удаляСт всС части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мСньшС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.
// Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ мосты.
$canvas = $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #13 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Open intensity Imagick::morphology()

<?php
// Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ "Open" сглаТиваСт ΠΊΠΎΠ½Ρ‚ΡƒΡ€, округляя всС острыС Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈ удаляСт всС части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мСньшС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.
// Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ мосты.

$canvas = $this->getCharacter();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_OPEN_INTENSITY, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #14 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Close Imagick::morphology()

<?php
// ОсновноС использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° "Close" - ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ‹Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ элСмСнта ядра.
// Π­Ρ‚ΠΎ "Π±Π»ΠΈΠ·ΠΊΠΈΠ΅" части Ρ„ΠΎΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
$canvas = $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #15 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Close Intensity Imagick::morphology()

<?php
// ОсновноС использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° "Close" - ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ‹Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ элСмСнта ядра.
// Π­Ρ‚ΠΎ "Π±Π»ΠΈΠ·ΠΊΠΈΠ΅" части Ρ„ΠΎΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
$canvas = $this->getCharacter();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE_INTENSITY, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #16 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Smooth Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_SMOOTH, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #17 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Edge in Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #18 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Edge out Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
$canvas->morphology(\Imagick::MORPHOLOGY_EDGE_OUT, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #19 ΠœΠ΅Ρ‚ΠΎΠ΄ "TopHat", ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, "White TopHat", Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пиксСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пиксСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ для округлСния Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈ соСдинСниС, соСдинённоС мостом ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌΠΈ. Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
$canvas->morphology(\Imagick::MORPHOLOGY_TOP_HAT, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #20 ΠœΠ΅Ρ‚ΠΎΠ΄ "TopHat", ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, "Black TopHat", Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пиксСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пиксСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались для заполнСния Π΄Ρ‹Ρ€, Π·Π°Π·ΠΎΡ€ΠΎΠ² ΠΈ мостов. Imagick::morphology()

<?php

$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
$canvas->morphology(\Imagick::MORPHOLOGY_BOTTOM_HAT, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #21 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Hit ΠΈ Miss Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
// Находит всС пиксСли с 3 пиксСлями ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ края
$matrix = [[1, false, false, 0]];
$kernel = \ImagickKernel::fromMatrix(
$matrix,
[
0, 0]
);
$canvas->morphology(\Imagick::MORPHOLOGY_HIT_AND_MISS, 1, $kernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #22 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Thinning Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
$rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
$leftEdgeKernel->addKernel($rightEdgeKernel);

$canvas->morphology(\Imagick::MORPHOLOGY_THINNING, 3, $leftEdgeKernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #23 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Thicken Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
$rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
$leftEdgeKernel->addKernel($rightEdgeKernel);

$canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, 3, $leftEdgeKernel);
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #24 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Thick для создания Π²Ρ‹ΠΏΡƒΠΊΠ»ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$diamondKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "1");
$convexKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CONVEX_HULL, "");

// Утолщённая морфология Π½Π΅ справляСтся с нСбольшими Π·Π°Π·ΠΎΡ€Π°ΠΌΠΈ.
// Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΈΡ… Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ.
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);
$canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, -1, $convexKernel);
$canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);

header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #25 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Iterative morphology Imagick::morphology()

<?php
$canvas
= $this->getCharacterOutline();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "2");
$canvas->morphology(\Imagick::MORPHOLOGY_ITERATIVE, 3, $kernel);
$canvas->autoLevelImage();
header("Content-Type: image/png");
echo
$canvas->getImageBlob();

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #26 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для получСния силуэта изобраТСния Imagick::morphology()

<?php

function getCharacterOutline() {
$imagick = new \Imagick(realpath("./images/character.png"));
$character = new \Imagick();
$character->newPseudoImage(
$imagick->getImageWidth(),
$imagick->getImageHeight(),
"canvas:white"
);
$canvas = new \Imagick();
$canvas->newPseudoImage(
$imagick->getImageWidth(),
$imagick->getImageHeight(),
"canvas:black"
);

$character->compositeimage(
$imagick,
\Imagick::COMPOSITE_COPYOPACITY,
0, 0
);
$canvas->compositeimage(
$character,
\Imagick::COMPOSITE_ATOP,
0, 0
);
$canvas->setFormat('png');

return
$canvas;
}
?>
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы