0

我有相同的代码,相同版本的 imagemagick,但第二台服务器的输出不同。它似乎缺乏透明的颜色。

服务器 1:http ://webninjamobile.com/portfolio/canvas/Desert_Distorded.png

服务器 2:

http://54.252.104.61/uploads/perspective/NLuLUfqQvPnglG82aBtd.jpg

相同的imagemagick版本。

代码

<?php
    error_reporting(E_ALL);
    $im = new Imagick('4.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(0, $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); 
    $im4 = $im->clone();
    $im4->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    $im4->setImageMatte(true);
    $im4->cropImage($w, $h,$w-100,0);
    $image = new Imagick();
    $image->addImage($im1);
    //$image->addImage($im4);
    $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');
   // echo '<img src="http://webninjamobile.com/portfolio/canvas/Desert_Distorded.png" />';
4

0 回答 0