PHP 8.1.0 RC 2 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 değiştirgesi 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.

Değiştirgeler

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)',   $root3,         false,],
            [
'rgb(245, 0, 0)',      'rgb(255, 0, 0)',  10 $root3,         true,],
            [
'rgb(0, 0, 0)',        'rgb(7, 7, 0)',     $root3,         false,],
            [
'rgb(0, 0, 0)',        'rgb(7, 7, 0)',    10 $root3,         true,],
            [
'rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)'$root3,         false,],
            [
'rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)',    10 $root3,     true,],
            [
'rgb(128, 128, 128)',  'rgb(128, 128, 120)',   $root3,     false,],
            [
'rgb(128, 128, 128)',  'rgb(128, 128, 120)',   $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 add a note

User Contributed Notes

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