PHP Conference Japan 2024

Imagick::forwardFourierTransformImage

(PECL imagick 3 >= 3.3.0)

Imagick::forwardFourierTransformImage實作離散傅立葉轉換 (DFT)

描述

public Imagick::forwardFourierTransformImage(bool $magnitude): bool

實作影像的離散傅立葉轉換 (DFT),可以是振幅/相位或實數/虛數影像對。

參數

magnitude

如果為 true,則以振幅/相位對返回,否則以實數/虛數影像對返回。

回傳值

成功時返回 true

範例

範例 #1 Imagick::forwardFourierTransformImage()

<?php
//用於 forwardTransformImage 的工具函式
function createMask() {
$draw = new \ImagickDraw();

$draw->setStrokeOpacity(0);
$draw->setStrokeColor('rgb(255, 255, 255)');
$draw->setFillColor('rgb(255, 255, 255)');

//在 y 軸上繪製一個圓形,其中心
//位於 x, y,且接觸原點
$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();
}

?>

新增註解

使用者貢獻的註解

此頁面尚無使用者貢獻的註解。
To Top