Grafika\Imagick\Editor::resizeExact PHP Method

resizeExact() public method

Resize image to exact dimensions ignoring aspect ratio. Useful if you want to force exact width and height.
public resizeExact ( Image &$image, integer $newWidth, integer $newHeight ) : self
$image Image
$newWidth integer Width in pixels.
$newHeight integer Height in pixels.
return self
    public function resizeExact(&$image, $newWidth, $newHeight)
    {
        $this->_resize($image, $newWidth, $newHeight);
        return $this;
    }

Usage Example

Example #1
0
 /**
  * Generate and get the difference hash of image.
  *
  * @param Image $image
  *
  * @param Editor $editor
  *
  * @return string
  */
 public function hash($image, $editor)
 {
     $width = 9;
     $height = 8;
     $image = clone $image;
     // Make sure we are working on the clone if Image is passed
     $editor->resizeExact($image, $width, $height);
     // Resize to exactly 9x8
     $imagick = $image->getCore();
     // Build hash
     $hash = '';
     for ($y = 0; $y < $height; $y++) {
         // Get the pixel value for the leftmost pixel.
         $rgba = $imagick->getImagePixelColor(0, $y)->getColor();
         $left = floor(($rgba['r'] + $rgba['g'] + $rgba['b']) / 3);
         for ($x = 1; $x < $width; $x++) {
             // Get the pixel value for each pixel starting from position 1.
             $rgba = $imagick->getImagePixelColor($x, $y)->getColor();
             $right = floor(($rgba['r'] + $rgba['g'] + $rgba['b']) / 3);
             // Each hash bit is set based on whether the left pixel is brighter than the right pixel.
             if ($left > $right) {
                 $hash .= '1';
             } else {
                 $hash .= '0';
             }
             // Prepare the next loop.
             $left = $right;
         }
     }
     $editor->free($image);
     return $hash;
 }