(PECL imagick 2, PECL imagick 3)
ImagickPixel::isSimilar — İki renk arasındaki benzerliği hesaplar
renk
bağımsız değişkeni ile belirtilen ImagickPixel
nesnesinin rengi ile bu nesnenin rengi arasındaki benzerliği hesaplar. Eğer
iki nesne arasındaki benzerlik benzerlik
ile
belirtilen değerden küçükse iki renk benzerdir.
Bu işlev eskidir. Yerine ImagickPixel::isPixelSimilar()
kullanılnalıdır.
renk
Bu nesne ile karşılaştırılacak ImagickPixel nesnesi.
benzerlik
Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir. Bu değerin kuramsal azamisi üçün kareköküne eşit bir değerdir (1.732).
Başarı durumunda true
döner.
Örnek 1 - ImagickPixel::isSimilar() örneği
<?php
// Aşağıdaki denemeler 255 olarak ifade edilen azami mesafe ile
// yapılmıştır, bu nedenle bunları bir birim küpün köşegen uzunluğu
// olan üçün karekökü ile ölçeklendirmemiz gerekir.
$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>
Deneme mesafesi * 255
</th>
<th>
Mesafe dahilinde
</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 "Deneme mesafesi başarısız. [$color1] ile [$color2] renkleri mesafe içinde değil. $testDistance BAŞARISIZ.".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 ? 'evet' : 'hayır'
);
}
$output .= "</tbody></table>";
return $output;
?>