Imagick::deskewImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3 >= 3.3.0)

Imagick::deskewImageУдаляет перекос с изображения

Описание

public Imagick::deskewImage ( float $threshold ) : bool

Метод можно использовать для удаления перекоса, например, отсканированных изображений, если бумага не была правильно размещена на поверхности сканирования. Этот метод доступен, если Imagick был скомпилирован с версией ImageMagick 6.4.5 или старше.

Список параметров

threshold

Размер перекоса

Возвращаемые значения

Примеры

Пример #1 Imagick::deskewImage()

<?php
function deskewImage($threshold) {
    
$imagick = new \Imagick(realpath("images/NYTimes-Page1-11-11-1918.jpg"));
    
$deskewImagick = clone $imagick;
    
    
//Это единственное, что требуется для удаления перекоса.
    
$deskewImagick->deskewImage($threshold);

    
//Остальная часть этого примера - сделать результат очевидным, 
    //потому что в противном случае результат не очевиден.
    
$trim 9;

    
$deskewImagick->cropImage($deskewImagick->getImageWidth() - $trim$deskewImagick->getImageHeight(), $trim0);
    
$imagick->cropImage($imagick->getImageWidth() - $trim$imagick->getImageHeight(), $trim0);
    
$deskewImagick->resizeimage($deskewImagick->getImageWidth() / 2$deskewImagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS1);
    
$imagick->resizeimage($imagick->getImageWidth() / 2$imagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS1);
    
$newCanvas = new \Imagick();
    
$newCanvas->newimage($imagick->getImageWidth() + $deskewImagick->getImageWidth() + 20$imagick->getImageHeight(), 'red''jpg');
    
$newCanvas->compositeimage($imagick, \Imagick::COMPOSITE_COPY50);
    
$newCanvas->compositeimage($deskewImagick, \Imagick::COMPOSITE_COPY$imagick->getImageWidth() + 100);

    
header("Content-Type: image/jpg");
    echo 
$newCanvas->getImageBlob();
}

?>