©
This document uses PHP Chinese website manual Release
(No version information available, might only be in Git)
Imagick::forwardFourierTransformImage — Description
$magnitude
)Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
magnitude
If true, return as magnitude / phase pair otherwise a real / imaginary image pair.
Example #1 Imagick::forwardFourierTransformImage()
<?php
//Utility function for forwardTransformImage
function createMask () {
$draw = new \ ImagickDraw ();
$draw -> setStrokeOpacity ( 0 );
$draw -> setStrokeColor ( 'rgb(255, 255, 255)' );
$draw -> setFillColor ( 'rgb(255, 255, 255)' );
//Draw a circle on the y-axis, with it's centre
//at x, y that touches the origin
$draw -> circle ( 250 , 250 , 220 , 250 );
$imagick = new \ Imagick ();
$imagick -> newImage ( 512 , 512 , "black" );
$imagick -> drawImage ( $draw );
$imagick -> gaussianBlurImage ( 20 , 20 );
$imagick -> autoLevelImage ();
return $imagick ;
}
function forwardFourierTransformImage ( $imagePath ) {
$imagick = new \ Imagick ( realpath ( $imagePath ));
$imagick -> resizeimage ( 512 , 512 , \ Imagick :: FILTER_LANCZOS , 1 );
$mask = createMask ();
$imagick -> forwardFourierTransformImage ( true );
@ $imagick -> setimageindex ( 0 );
$magnitude = $imagick -> getimage ();
@ $imagick -> setimageindex ( 1 );
$imagickPhase = $imagick -> getimage ();
if ( true ) {
$imagickPhase -> compositeImage ( $mask , \ Imagick :: COMPOSITE_MULTIPLY , 0 , 0 );
}
if ( false ) {
$output = clone $imagickPhase ;
$output -> setimageformat ( 'png' );
header ( "Content-Type: image/png" );
echo $output -> getImageBlob ();
}
$magnitude -> inverseFourierTransformImage ( $imagickPhase , true );
$magnitude -> setimageformat ( 'png' );
header ( "Content-Type: image/png" );
echo $magnitude -> getImageBlob ();
}
?>