ImagickPixel::isSimilar
(PECL imagick 2, PECL imagick 3)
ImagickPixel::isSimilar — この色と別の色の差を調べる
説明
public isSimilar
( ImagickPixel $color
, float $fuzz
) : bool
警告 この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
この ImagickPixel オブジェクトと別のオブジェクトの色の差を調べます。 これは、両者の RGB 値を色立方体上にプロットすることで行います。 ふたつの色の差が fuzz で指定した値よりも小さければ、 同じ色であるとみなされます。 非推奨です。かわりに ImagickPixel::isPixelSimilar() を使いましょう。
パラメータ
color
- このオブジェクトと比較したい ImagickPixel オブジェクト。
fuzz
- 同じ色であるとみなす最大の誤差。 理論上の最大値は、3 の平方根 (1.732) となります。
返り値
成功した場合に true
を返します。
例
例1 ImagickPixel::isSimilar()
<?php // The tests below are written with the maximum distance expressed as 255 // so we need to scale them by the square root of 3 - the diagonal length // of a unit cube. $root3 = 1.732050807568877; $tests = array( ['rgb(245, 0, 0)', 'rgb(255, 0, 0)', 9 / $root3, false,], ['rgb(245, 0, 0)', 'rgb(255, 0, 0)', 10 / $root3, true,], ['rgb(0, 0, 0)', 'rgb(7, 7, 0)', 9 / $root3, false,], ['rgb(0, 0, 0)', 'rgb(7, 7, 0)', 10 / $root3, true,], ['rgba(0, 0, 0, 1)', 'rgba(7, 7, 0, 1)', 9 / $root3, false,], ['rgba(0, 0, 0, 1)', 'rgba(7, 7, 0, 1)', 10 / $root3, true,], ['rgb(128, 128, 128)', 'rgb(128, 128, 120)', 7 / $root3, false,], ['rgb(128, 128, 128)', 'rgb(128, 128, 120)', 8 / $root3, true,], ['rgb(0, 0, 0)', 'rgb(255, 255, 255)', 254.9, false,], ['rgb(0, 0, 0)', 'rgb(255, 255, 255)', 255, true,], ['rgb(255, 0, 0)', 'rgb(0, 255, 255)', 254.9, false,], ['rgb(255, 0, 0)', 'rgb(0, 255, 255)', 255, true,], ['black', 'rgba(0, 0, 0)', 0.0, true], ['black', 'rgba(10, 0, 0, 1.0)', 10.0 / $root3, true],); $output = "<table width='100%' class='infoTable'><thead> <tr> <th> Color 1 </th> <th> Color 2 </th> <th> Test distance * 255 </th> <th> Is within distance </th> </tr> </thead>"; $output .= "<tbody>"; foreach ($tests as $testInfo) { $color1 = $testInfo[0]; $color2 = $testInfo[1]; $distance = $testInfo[2]; $expectation = $testInfo[3]; $testDistance = ($distance / 255.0); $color1Pixel = new \ImagickPixel($color1); $color2Pixel = new \ImagickPixel($color2); $isSimilar = $color1Pixel->isPixelSimilar($color2Pixel, $testDistance); if ($isSimilar !== $expectation) { echo "Test distance failed. Color [$color1] compared to color [$color2] is not within distance $testDistance FAILED.".NL; } $layout = "<tr> <td>%s</td> <td>%s</td> <td>%s</td> <td style='text-align: center;'>%s</td> </tr>"; $output .= sprintf( $layout, $color1, $color2, $distance, $isSimilar ? 'yes' : 'no' ); } $output .= "</tbody></table>"; return $output;?>