Фильтрация изображений php с использованием Box среднего - PullRequest
0 голосов
/ 04 ноября 2018

Я написал следующий код для фильтрации изображений с использованием усреднения по Box, я думаю, что все сделал правильно, даже несмотря на то, что выходное изображение выглядит темнее и фильтрация не выполнялась, возможно, я что-то упустил, может кто-то взять посмотрите на код и помогите мне узнать, как я могу обновить код и получить желаемый результат.

<?php

$resource = imagecreatefrompng("t.png");

//$width = 3;
//$height = 3;

$width = imagesx($resource);
$height = imagesy($resource);
//put pixels values in an array
for($x = 0; $x < $width; $x++) {



                          $rValueSumForBox=$rValueSumForBox+$r; // Incrimenting Sum of the total r pixel values

                          $gValueSumForBox=$gValueSumForBox+$g; // Incrimenting Sum of the total g pixel values

                          $bValueSumForBox=$bValueSumForBox+$b; // Incrimenting Sum of the total b pixel values

                          $aValueSumForBox=$aValueSumForBox+$a; // Incrimenting Sum of the total b pixel values

                          //$pixelValueSumForBox= $pixelValueSumForBox+$boxPixelValue; // Adding the pixel value to the total sum


                         // echo "$xboxPixelAxis $yboxPixelAxis : >> $r $g $b $totalRGB $boxPixelValue &nbsp;&nbsp";

                          $yboxPixelAxis++;

                      }


                    $xboxPixelAxis++;

                //   echo "<br>";

                   } // END OF BOX AVERAGE

                   $rValueAverageForBox=round($rValueSumForBox/($BoxXDimension*$BoxXDimension)); 

                   $gValueAverageForBox=round($gValueSumForBox/($BoxXDimension*$BoxXDimension));

                   $bValueAverageForBox=round($bValueSumForBox/($BoxXDimension*$BoxXDimension));

                   $aValueAverageForBox=round($aValueSumForBox/($BoxXDimension*$BoxXDimension));

                   $arrayPixels[$x][$y]=($rValueAverageForBox << 16) + ($gValueAverageForBox << 8) + $bValueAverageForBox + ($aValueAverageForBox << 24); // Assigning pixel 
                                                                                                                            //new pixel value
                  //  echo "$x $y Actual: ".$arrayPixels[$x][$y]."&nbsp;"; echo "Average: ".$arrayAverage ."&nbsp;&nbsp";  
    }

      //  echo "<br>";
}


$img = imagecreatetruecolor($width, $height);


 for($x = 0; $x < $width; $x++) {
    //  echo " $x2 <br>";
    for($y = 0; $y < $height; $y++) {

        // Allocate the color of the pixel
        imagesetpixel($img, $x, $y, $arrayPixels[$x][$y]);


    }
}


// // Set the image type
header('Content-Type: image/png');

// Create a png file from the image
imagepng($img,'NEW2.png');

// Free memory associated with the image
imagedestroy($img);

//*/
...