我想實現this code snippet(一個 「小插曲」 效應)與Imagick,但處理是慢得令人難以置信:Imagick像素迭代器 - 很慢
set_time_limit(90);
$iterator = $imagick->getPixelIterator();
$width = $imagick->getImageWidth();
$height = $imagick->getImageHeight();
foreach($iterator as $y => $pixels){
foreach($pixels as $x => $pixel){
$l = 1 - 0.7 * (1 - pow((sin(M_PI/$width * $x) * sin(M_PI/$height * $y)), 0.4));
extract($pixel->getColor());
$pixel->setColor(sprintf('rgb(%d,%d,%d)', $r * $l, $g * $l, $b * $l));
}
$iterator->syncIterator();
}
原文:
結果:
對於1600x1200的圖像,要處理圖像需要35秒。有一個更好的方法嗎?
對於涉及pow,sin,get和setColor的1920萬次操作,35秒35秒,我想Imagick做得很好。 –
但與GD相同的效果應用更快與imagesetpixel,如12秒.. – thelolcat