Sets the image sampling factors.
Theoretically, this function allows you to set the sampling factors to be used by the JPEG compressor. In practice though, it does not seem to function particuarly well. I recommend using `Imagick::setImageProperty()` to set 'jpeg:sampling-factor' to one of the standard down-sampling types. e.g. 4:2:0
  • 4:4:4
  • 4:4:1
  • 4:4:0
  • 4:2:2
  • 4:2:0
  • 4:2:1
  • 4:2:0
  • 4:1:1
  • 4:1:0
e.g. Imagick::setImageProperty('jpeg:sampling-factor', '4:2:0');
Original size = 27764
Theoretically, this function allows you to set the sampling factors to be used by the JPEG compressor. In practice though, it does not seem to function particuarly well. I recommend using `Imagick::setImageProperty()` to set 'jpeg:sampling-factor' to one of the standard down-sampling types. e.g. 4:2:0
  • 4:4:4
  • 4:4:1
  • 4:4:0
  • 4:2:2
  • 4:2:0
  • 4:2:1
  • 4:2:0
  • 4:1:1
  • 4:1:0
e.g. Imagick::setImageProperty('jpeg:sampling-factor', '4:2:0');
function setSamplingFactors()
{
    $image_path = "../public/images/FineDetail.png";
    $imagick = new \Imagick(realpath($image_path));
    $imagick->setImageFormat('jpg');
    $imagick->setSamplingFactors(array('2x2', '1x1', '1x1'));

    $compressed = $imagick->getImageBlob();

    $reopen = new \Imagick();
    $reopen->readImageBlob($compressed);

    $reopen->resizeImage(
        $reopen->getImageWidth() * 4,
        $reopen->getImageHeight() * 4,
        \Imagick::FILTER_POINT,
        1
    );
    
    header("Content-Type: image/jpeg");
    echo $reopen->getImageBlob();
}
Option 1,1,1 new size 27764
Option 1,1,2 new size 10740
Option 1,2,1 new size 11466
Option 1,2,2 new size 15371
Option 2,1,1 new size 19377
Option 2,1,2 new size 23320
Option 2,2,1 new size 24052