• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Imagick::setOption()

    (PECL imagick 2.0.0)

    Set an option

    说明

    Imagick::setOption(string $key,string $value): bool

    Associates one or more options with the wand.

    参数

    $key
    $value

    返回值

    成功时返回TRUE

    范例

    Example #1 Attempt to reach '$extent' sizeImagick::setOption()

    <?php
        function renderJPG($extent) {
            $imagePath = $this->control->getImagePath();
            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('jpg');
            $imagick->setOption('jpeg:extent', $extent);
            header("Content-Type: image/jpg");
            echo $imagick->getImageBlob();
        }
    ?>
    

    Example #2 Imagick::setOption()

    <?php
        function renderPNG($imagePath, $format) {
            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('png');
            $imagick->setOption('png:format', $format);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }
        
        //Save as 64bit PNG.
        renderPNG($imagePath, 'png64');
    ?>
    

    Example #3 Imagick::setOption()

    <?php
        function renderCustomBitDepthPNG() {
            $imagePath = $this->control->getImagePath();
            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('png');
            
            $imagick->setOption('png:bit-depth', '16');
            $imagick->setOption('png:color-type', 6);
            header("Content-Type: image/png");
            $crash = true;
            if ($crash) {
                echo $imagick->getImageBlob();
            }
            else {
                $tempFilename = tempnam('./', 'imagick');
                $imagick->writeimage(realpath($tempFilename));
                echo file_get_contents($tempFilename);
            }
        }
    ?>
    
    List of options (with key => value) on official imagemagick site:
    http://www.imagemagick.org/script/command-line-options.php#define
    If you want to extract a preview from a PDF file using the CropBox instead of the whole document, setOption() is the right method:
    <?php
    $handler = new Imagick();
    $handler->setOption('pdf:use-cropbox', 'true');
    $handler->readImage($imageFileName);
    $handler->thumbnailImage(200, 200, true);
    $handler->setImageFormat('jpeg');
    $handler->writeImage($destThumbFileName);
    ?>
    It is the equivalent to the -define pdf:use-cropbox=true for the convert command line tool. pdf:use-trimbox is also available.
    Note that on my environment the setOption only worked when i called it before the readImage method, which means that you can't pass the filename to the Imagick constructor directly.