PHP.mk документација

Imagick::distortImage

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

imagick.distortimage.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека imagick.distortimage.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Imagick::distortImage

Референца за `imagick.distortimage.php` со подобрена типографија и навигација.

imagick.distortimage.php

Imagick::distortImage

("PECL imagick 2 >= 2.0.1", "PECL imagick 3")

Imagick::distortImage(PECL imagick 2 >= 2.0.1, PECL imagick 3)

= NULL

public function Imagick::distortImage(int $method, array $arguments, bool $bestfit): bool

Извртува слика користејќи различни методи на извртување true.

Извртува слика користејќи различни методи на извртување, со мапирање на пребарувањата на боите на изворната слика до нова целна слика, обично со иста големина како изворната слика, освен ако 'bestfit' не е поставен на

Ако е овозможено 'bestfit', и извртувањето го дозволува тоа, целната слика се прилагодува за да се осигура дека целата изворна 'слика' ќе се вклопи во финалната целна слика, која ќе биде соодветно голема и поместена. Исто така, во многу случаи, виртуелното поместување на изворната слика ќе се земе предвид при мапирањето.

Параметри

method

Овој метод е достапен ако Imagick е компајлиран со верзијата на ImageMagick 6.3.6 или понова. Методот на извртување на сликата. Види

arguments

константи за извртување

bestfit

Аргументите за овој метод на извртување

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успешен исход.

Errors/Exceptions

Фрла ImagickException при грешка.

Примери

Пример #1 Користење Обидете се да ја прилагодите целта за да одговара на извртената изворна:

Imagick::distortImage()

<?php
/* Create new object */
$im = new Imagick();

/* Create new checkerboard pattern */
$im->newPseudoImage(100, 100, "pattern:checkerboard");

/* Set the image format to png */
$im->setImageFormat('png');

/* Fill new visible areas with transparent */
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

/* Activate matte */
$im->setImageMatte(true);

/* Control points for the distortion */
$controlPoints = array( 10, 10,
10, 5,

10, $im->getImageHeight() - 20,
10, $im->getImageHeight() - 5,

$im->getImageWidth() - 10, 10,
$im->getImageWidth() - 10, 20,

$im->getImageWidth() - 10, $im->getImageHeight() - 10,
$im->getImageWidth() - 10, $im->getImageHeight() - 30);

/* Perform the distortion */
$im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);

/* Ouput the image */
header("Content-Type: image/png");
echo
$im;
?>

Горниот пример ќе прикаже нешто слично на:

Output of example : Using Imagick::distortImage()

Види Исто така

Белешки од корисници 4 белешки

Imagick::radialBlurImage()
пред 15 години
Affine

<?php 
$image = new imagick( "opossum.jpg" ); 
$points = array( 
                0,0, 25,25,   
               100,0, 100,50 
               );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage(  Imagick::DISTORTION_AFFINE, $points, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Affine Projection

<?php 
$image = new imagick( "opossum.jpg" ); 
$points = array( 0.9,0.3,
                -0.2,0.7,
                 20,15 );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( Imagick::DISTORTION_AFFINEPROJECTION, $points, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Arc

<?php 
$image = new imagick( "opossum.jpg" ); 
$draw = new imagickdraw(); 
$degrees = array( 180 );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( Imagick::DISTORTION_ARC, $degrees, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Rotated Arc

<?php 
$image = new imagick( "opossum.jpg" ); 
$draw = new imagickdraw(); 
$degrees = array( 180, 45, 100, 20 );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( Imagick::DISTORTION_ARC, $degrees, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Bilinear

<?php 
$image = new imagick( "opossum.jpg" ); 
$points = array( 
                0,0, 25,25, # top left  
                176,0, 126,0, # top right
                0,135, 0,105, # bottom right 
                176,135, 176,135 # bottum left
                );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( Imagick::DISTORTION_BILINEAR, $points, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Perspective

<?php 
$image = new imagick( "opossum.jpg" ); 
$points = array( 
                0,0, 25,25, # top left  
                176,0, 126,0, # top right
                0,135, 0,105, # bottom right 
                176,135, 176,135 # bottum left
                );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( Imagick::DISTORTION_PERSPECTIVE, $points, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>

Scale Rotate Translate

<?php 
$image = new imagick( "opossum.jpg" ); 
$points = array( 
                 1.5, # scale 150%
                 150 # rotate
               );
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod( imagick::VIRTUALPIXELMETHOD_BACKGROUND );
$image->distortImage( imagick::DISTORTION_SCALEROTATETRANSLATE, $points, TRUE ); 
header( "Content-Type: image/jpeg" ); 
echo $image;
?>
DJ Mike
пред 11 години
It is worth nothing that details on distorts as well as arguments can be found at http://www.imagemagick.org/Usage/distorts/ - the PHP manual doesn't give much, if any, detail on arguments.

I found this very useful when I had to do a translated rotation on an image - i.e. rotating around a point in the image that was not square in the center. This can be achieved by using distortImage with Imagick::DISTORTION_SCALEROTATETRANSLATE like this:

<?php

$imagick = new Imagick('/path/to/image');
$args = array(
    20, # x point to rotate around
    20, # y point to rotate around
    1, # scaling factor - 1 means no scaling
    90, # angle to rotate
);

$imagick->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$imagick->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE, $args, true);

?>

Note that this type of distort takes from 1 to 7 arguments, depending on what you want to do exactly - there is a lot of flexibility here.
peter dot e dot lind at gmail dot com
пред 5 години
Control Points for DISTORTION_PERSPECTIVE are pairs of x0, y0, x1, y1 coordinates, where x0/y0 is the original point and x1/y1 is the destination point, 

e.g. for a four point distortion:

    <?php 

    $im = new imagick( $fn); 

    $w=$im->getImageWidth();
    $h=$im->getImageHeight();
    $im->setImageFormat('png');

    $controlPoints = array(
                    $tLx, $tLy, 0, 0,  // top left
                    $tRx, $tRy, $w, 0, // top right
                    $bRx, $bRy, $w, $h, // bottom right
                    $bLx, $bLy, 0, $h // bottom left
                );

    /* Perform the distortion */
    $im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, false);

    // Output the image
    $output = $im->getimageblob();
    $outputtype = $im->getFormat();

    header("Content-type: $outputtype");
    echo $output;
     
    ?>
Abe
пред 15 години
Slide image with shadow using distortImage

<?php

$slideValue = 150;

// Create new object 
$im = new Imagick("grnhrs.jpg");

// Resize 
$im->thumbnailImage(500,400);

// Set the image format to png 
$im->setImageFormat('png');

//Clone the current object
$shadow = $im->clone();

//Set image background color to black (this is the color of the shadow)
$shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) );
 
 //Create the shadow 
$shadow->shadowImage( 80, 10, 5, 5 );

// Fill background area with transparent for image
//VIRTUALPIXELMETHOD_TRANSPARENT
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_ TRANSPARENT);

// Activate matte 
$im->setImageMatte(true);

//Control points for the distortion 
$controlPoints = array( 0, 0,
                        $slideValue, 0,
                        
                        0, $im->getImageHeight(),
                        0, $im->getImageHeight(),
                        
                        $im->getImageWidth(), 0,
                        $im->getImageWidth(), 0,
                        
                        $im->getImageWidth(), $im->getImageHeight(),
                        $im->getImageWidth()-$slideValue, $im->getImageHeight());
                        
// Perform the distortion 
$im->distortImage(Imagick::DISTORTION_PERSPECTIVEPROJECTION, $controlPoints, true);

// Perform the distortion in shadow image
$shadow->distortImage(Imagick::DISTORTION_PERSPECTIVEPROJECTION, $controlPoints, true);

// Imagick::shadowImage only creates the shadow.
// That is why the original image is composited over it 
$shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );

/* Ouput the image */
header("Content-Type: image/png");
echo $shadow;

?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.