2 Stimmen

wie man mit der php imagick bibliothek bilder wie eine leinwand oder eine toile aussehen lässt

Ich verwende die php-Bibliothek Imagick für einige Bildbearbeitungen. Ich kann die Perspektive von Bildern verzerren, aber ich kann sie nicht wie eine Leinwand oder ein Toilettentuch aussehen lassen

>>

Es wäre toll, wenn mir jemand erklären könnte, wie ich das machen kann.

Vielen Dank im Voraus

6voto

Onur Kucukkece Punkte 1678

Ich glaube, ich habe erreicht, was ich wollte.

Hier ist mein Ansatz

$im = new Imagick('Desert.jpg');
$im->setImageFormat('png');

$d = $im->getImageGeometry();
$w = $d['width'];  
$h = $d['height']; 

$im3 = new Imagick();
$im3->newImage(1, $h, 'none','png');
$im3->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

$im1 = $im->clone();;
$im1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im1->setImageMatte(true);
$im1->cropImage(($w-10), $h, 0, 0);
$controlPoints = array(
                    0,0, 15,15, 
                    ($w-10),0, ($w-10),0, 
                    0,$h, 25,($h-20), 
                    ($w-10),$h, ($w-10),$h 
                    );

$im1->distortImage(Imagick::DISTORTION_BILINEAR, $controlPoints, true);

$im2 = $im->clone();
$im2->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im2->setImageMatte(true);

$im2->cropImage(10, $h, ($w-10), 0);

$controlPoints2 = array(
                    0,0, 0,0, 
                    10,0,10,10, 
                    0,$h, 0,$h,
                    10,$h, 10,($h-10) 
                    );

$im2->distortImage(Imagick::DISTORTION_BILINEAR, $controlPoints2, true); 

$image = new Imagick();

$image->addImage($im1);
$image->addImage($im3);
$image->addImage($im2);
$image->resetIterator();

$combined = $image->appendImages(false);

$shadow = $combined->clone(); 

$shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) ); 

$shadow->shadowImage( 50, 3, 5, 5 ); 

$shadow->compositeImage( $combined, Imagick::COMPOSITE_OVER, 0, 0 ); 

$shadow->writeImage('Desert_Distorded.png');

und das Endergebnis lautet

https://i.stack.imgur.com/DFj6R.png

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X