woo*_*110 6 php image image-processing imagick
我有两个图像(两个图)一个是普通地图,一个是有图钉的地图.
图一
图像二
我试图将它们相互减去,所以我只留下了作为透明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)
有谁知道如何整理/调整这个以使颜色与原始图像相匹配?
谢谢!
我已经设法使用 Piglet 和流浪战士提到的掩蔽技术并在这篇 文章的帮助下使其发挥作用
如果其他人需要它,代码在这里:
<?php
$base = new Imagick('images/base-map.png'); // blank map
$mask = $base; // copy of this to create the mask with
$imageTwo = new Imagick('images/pins/location-7.png'); // image with pins on it
// create the mask
$mask->compositeImage($imageTwo, Imagick::COMPOSITE_DIFFERENCE, 0, 0);
$mask->paintTransparentImage($mask->getImagePixelColor(0, 0), 0, 5000);
$mask->compositeImage($mask, Imagick::COMPOSITE_DIFFERENCE, 0, 0);
// remove the mask from the image with pins
$imageTwo->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$imageTwo->paintTransparentImage('#000', 0, 5000);
header('Content-Type: image/png');
echo $imageTwo;
Run Code Online (Sandbox Code Playgroud)
最终输出如下
希望这能帮助其他有需要的人!