相关疑难解决方法(0)

Imagick:用面具构图

我尝试重新创建一个脚本,使用ImageMagick命令"转换"来组成图像.但我想在PHP中使用Imagick(版本6.6.2-10)做同样的事情.

命令如下:

convert A1.mpc A3.mpc A4.mpc -channel rgba -alpha on -virtual-pixel background -background none -define compose:args=312x26.6776 -compose displace -composite out.mpc
Run Code Online (Sandbox Code Playgroud)

我发现参数代表以下内容:

convert  {background} {overlay} [{mask}] [-compose {method}] -composite {result}
Run Code Online (Sandbox Code Playgroud)

PHP Imagick给了我一个compose方法,但是没有mask参数:http://www.php.net/manual/en/imagick.compositeimage.php

我发现了另一个问题并尝试了这个(但不会产生相同的图像):

// load images
$a1 = new Imagick('a1.png');
$a3 = new Imagick('a3.png');
$a4 = new Imagick('a4.png');

// mask the overlay
$a1->compositeImage($a4, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);

// compose overlay to background
$a1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$a1->setImageBackgroundColor(new ImagickPixel('none'));
$a1->setOption('compose:args', '312x26.6776');
$a1->compositeImage($a3, Imagick::COMPOSITE_DISPLACE, 0, 0);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:这是使用蒙版构图的正确方法吗?或者这里有什么问题?

为了帮助可视化我想要做的事情,这里有一些输入图像:

输入图像a1(背景):

A1

输入图像a3(叠加):

A3

输入图像a4(掩码):

A4

我想要的结果是: …

php transformation mask composite imagick

16
推荐指数
1
解决办法
1943
查看次数

使用imagick PHP在png图像周围添加边框

如何在png图像周围添加边框?每当我尝试添加边框采用borderImage可用功能imagick它失去了它的透明度,如果它是一个PNG图像.

<?php

$image = new Imagick();
$image->readImage('tux.png');

$image->BorderImage(new ImagickPixel("red") , 5,5);

// send the result to the browser
header("Content-Type: image/" . $image->getImageFormat());
echo $image;
Run Code Online (Sandbox Code Playgroud)

这是原始图片:

在此输入图像描述

这是在添加边框之后:

在此输入图像描述

边框颜色也应用于背景.我想用imagick做到这一点如何在不失透明度的情况下将边框应用于透明图像?

php png image image-processing

12
推荐指数
1
解决办法
9917
查看次数

使用透明PNG作为剪辑蒙版

是否可以拍摄此图片:

image1 http://i34.tinypic.com/2d8neo0.png

并应用此面具:

面具http://i35.tinypic.com/2091450.png

把它变成这个:

image2 http://i37.tinypic.com/23m7apv.png

使用GD还是Imagick?我知道可以使用形状来掩盖图像,但我不确定如何继续使用预先创建的透明图像.:■

php gd imagick

9
推荐指数
2
解决办法
2万
查看次数

减去两个图像以留下结果 - PHP

我有两个图像(两个图)一个是普通地图,一个是有图钉的地图.

图一

图一

图像二

图像二

我试图将它们相互减去,所以我只留下了作为透明png的引脚.

我已经取得了一些成功,并设法将引脚作为自己的图像,问题是颜色不太正确(见图3).

图三

图三

我正在使用Imagick这样做,我的代码如下

<?php

// load in the base image into Imagick
$imageOne = new Imagick('images/base-map.png');
$imageTwo = new Imagick('images/pins/location-7.png');

$imageOne->compositeImage($imageTwo, Imagick::COMPOSITE_DIFFERENCE, 0, 0);
$imageOne->paintTransparentImage($imageOne->getImagePixelColor(0, 0), 0, 5000);

header('Content-Type: image/png');

echo $imageOne;
Run Code Online (Sandbox Code Playgroud)

有谁知道如何整理/调整这个以使颜色与原始图像相匹配?

谢谢!

php image image-processing imagick

6
推荐指数
1
解决办法
430
查看次数

用想象力环绕形象

尝试拍摄矩形照片,将其裁剪成方形区域,然后将其遮盖成具有透明背景的圆形.

//$dims is an array with the width, height, x, y of the region in the rectangular image (whose path on disk is $tempfile)

$circle = new \Imagick();
$circle->newImage($dims['w'], $dims['h'], 'none');
$circle->setimageformat('png');
$circle->setimagematte(true);
$draw = new \ImagickDraw();
$draw->setfillcolor('#ffffff');
$draw->circle($dims['w']/2, $dims['h']/2, $dims['w']/2, $dims['w']);
$circle->drawimage($draw);

$imagick = new \Imagick();
$imagick->readImage($tempfile);
$imagick->setImageFormat( "png" );
$imagick->setimagematte(true);
$imagick->cropimage($dims['w'], $dims['h'], $dims['x'], $dims['y']);
$imagick->compositeimage($circle, \Imagick::COMPOSITE_DSTIN, 0, 0);
$imagick->writeImage($tempfile);
$imagick->destroy();
Run Code Online (Sandbox Code Playgroud)

结果是矩形图像,未被切割并且没有被环化.我究竟做错了什么?

示例图片: 在此输入图像描述

$ dims的示例输入= {"x":253,"y":0,"x2":438.5,"y2":185.5,"w":185.5,"h":185.5}

粗略的预期产量:

在此输入图像描述

图像我看起来大致像输入图像.

php imagick

0
推荐指数
1
解决办法
8297
查看次数

标签 统计

php ×5

imagick ×4

image ×2

image-processing ×2

composite ×1

gd ×1

mask ×1

png ×1

transformation ×1