PHP 8.4.0 RC4 available for testing

ImagickPixel::isSimilar

(PECL imagick 2, PECL imagick 3)

ImagickPixel::isSimilarİki renk arasındaki benzerliği hesaplar

Açıklama

public ImagickPixel::isSimilar(ImagickPixel $renk, float $benzerlik): bool

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.

Bağımsız Değişkenler

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).

Dönen Değerler

Başarı durumunda true döner.

Örnekler

Ö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;

?>

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top