【问题标题】:How to save an Imagick object (php)如何保存 Imagick 对象 (php)
【发布时间】:2013-06-12 09:12:11
【问题描述】:

我想这是一个愚蠢的问题,但这是我第一次处理 php 和图像处理。简而言之,我想知道如何保存图像而不是在网页上回显它。该代码用于扭曲图像,这在这个问题中可能并不重要,当我保存图像时你可以看到最后几行..

代码:

/* Create new object */
$im = new Imagick('my_img.png');


$width = $im->getImageWidth();
$height = $im->getImageHeight();

/* 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( 0, 0, 
                    $height*0.7, $height*0.3,

                    0, $height,
                    0, $height,

                    $width, 0,
                    $height*0.7+$width, $height*0.3,

                    $width, $height,
                    $width, $height);

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

/* Ouput the image */ 
//commented out because I want to save the image instead
//header("Content-Type: image/png");
//echo $im;

// right way to save image?
imagepng($im, 'new_image.png');

// Free up memory
imagedestroy($im);

我得到的错误:imagepng(): 提供的参数不是有效的图像资源...

【问题讨论】:

    标签: php imagemagick imagick


    【解决方案1】:

    替换

    imagepng($im, 'new_image.png');
    

    $im->writeImage('new_image.png');
    

    【讨论】:

    • 嘿〜谢谢它的工作!另一个问题:在这种情况下我需要使用 imagedestroy($im) 释放内存吗?
    • 请单击此答案左侧的复选标记,因为它解决了问题。不,你需要做$im->destroy()
    • @blake305 最好使用 clear() php.net/manual/en/imagick.clear.php 而不是 destroy()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2016-02-16
    • 2015-11-15
    • 2012-04-17
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多