【发布时间】:2023-04-07 05:00:01
【问题描述】:
我正在创建一个小型网络应用程序,人们可以在其中为赛车的不同部分选择颜色。我正在使用 ImageMagick 为汽车的每个部分拍摄单独的图像,重新着色(使用 clutImage 函数),然后将它们叠加在一起以创建最终图像。
每张图片都是具有 alpha 透明度的 PNG-24。每张图片的大小完全相同,以便更轻松地组合它们。
大约有十层,其中六层正在重新着色。问题是性能有点差;每次更改颜色后,渲染图像大约需要十秒钟。这是我的代码:
示例代码:
<?php
if(isSet($piece['color'])) {
//make a 1pixel image to replace color with
$clut = new Imagick();
$clut->newImage(1, 1, new ImagickPixel("#".$piece["color"]));
//change the color of the part
$car_part->clutImage($clut);
}
//now we need to add the part onto the car
$car->compositeImage($car_part, Imagick::COMPOSITE_DEFAULT, 0, 0);
clutImage 似乎对于这项任务来说可能是矫枉过正;我不是在做渐变图,我只是用纯色替换所有彩色像素。然而,无论我使用什么函数,它可能仍然需要迭代数百万像素。
有没有更有效的方法来实现这一点,或者这只是我想要做的事情的本质?
【问题讨论】:
标签: php imagemagick imagick