【问题标题】:Using imagemagick montage with PHP在 PHP 中使用 imagemagick 蒙太奇
【发布时间】:2015-02-19 22:19:48
【问题描述】:

我正在尝试使用 imagemagick 制作蒙太奇。我让它部分工作。我想制作 2 列 2 行的蒙太奇。图像之间有 5px 的填充,在白色背景上。当我使用以下代码时,生成的图像是一个图像的两倍高和两倍宽,尽管只有四个图像中的第一个以正确的大小和点出现,其余三个点为白色。所有图像的尺寸和文件类型都相同。

<?php
header('Content-type: image/jpeg');
$loc1 = 'http://localhost:8888/gallery_edited/0116.jpg';
$loc2 = 'http://localhost:8888/gallery_edited/0115.jpg';
$loc3 = 'http://localhost:8888/gallery_edited/0114.jpg';
$loc4 = 'http://localhost:8888/gallery_edited/0113.jpg';
$image = new Imagick("$loc1 $loc2 $loc3 $loc4");
$image -> setFormat("jpg");
$image = $image -> montageImage(new ImagickDraw, '2x2', '600x400', 0, '0');
echo $image;

【问题讨论】:

    标签: php imagemagick


    【解决方案1】:

    使用Imagick::addImage 使用 Imagick 对象的新实例构建图像堆栈。

    <?php
    
    $sources = array(
        'red.png',
        'green.png',
        'blue.png',
        'orange.png'
    );
    
    $stack = new Imagick();
    foreach( $sources as $source ) {
        $stack->addImage(new Imagick($source));
    }
    
    $montage = $stack->montageImage(new ImagickDraw(), '2x2', '500x300', 0, '0');
    $montage->writeImage('out.png');
    

    【讨论】:

    • 非常感谢,我一直在想它一定不能使用所有的来源。
    • 我不得不将 $stack-&gt;addImage(new Imagick($source)); 更改为 $stack-&gt;addImage($source);,因为之前已经创建了 Imagick 类。不改变它不起作用,至少对我来说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多