我正在創建一個小型的網絡應用程序,人們可以爲賽車的不同部分選擇顏色。我使用ImageMagick取車的各部分的單獨的圖像,它們重新着色(用clutImage功能),以及層它們彼此的頂部以產生最終的圖像。用於PHP Imagick顏色替換的更有效的方法在PNG-24中
每個圖像是PNG-24帶alpha透明度。每幅圖像的尺寸完全相同,以便於將它們組合起來。
大概有十層,其中六層正在重新着色。問題是性能有點差;大約需要十秒鐘才能在每次換色後渲染圖像。這裏是我的代碼:
示例代碼:
<?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好像它可能是矯枉過正了這個任務;我沒有做漸變映射,我只是用純色替換所有顏色的像素。然而不管我用什麼樣的功能,它可能仍然有幾百萬像素的總迭代。
有沒有更高效的方法來完成這個,或者這只是我想要做的事情的性質?