我正试图制作一张美国地图,随着美国总统候选人被宣布为不同州的赢家而更新。要做到这一点,我有一堆各种颜色的状态图片(红色,蓝色,条纹等),我将拼接在一起创建完整的地图并将其保存为图像。
状态图像都是jpegs,我无法将它们转换为支持透明度的格式。我的问题是,一旦我将这些.jpg图像拉入Imagick,我该如何使这些.jpg图像的白色背景透明?
我有以下代码,它只显示添加到地图中的last image,因为其白色背景覆盖了其余部分。
$us_map = new Imagick();
$us_map->newImage(
self::MAP_WIDTH,
self::MAP_HEIGHT,
new ImagickPixel('none'),
);
$us_map->setFormat('png');
foreach ($curls as $curl) {
$state = new Imagick();
$state->readImageBlob($curl->getBody());
// What do I do here to change all white in $state to transparent?
$us_map->addImage($state);
}
$file_name = '/tmp/pic.US_MAP.'.request_time().'.png';
$us_map->writeImage($file_name);