如何雕刻感恩节土耳其的一半?

Dan*_*dux 9 php image-processing

我有一个很酷的问题.我试图突出这个火鸡的质量的50%.在实践中它不会是50%,但如果我能得到50%,我可以把剩下的都搞清楚.

我目前的想法是:扫描每个像素以找出火鸡的质量,以像素为单位.然后,当我想要50%的火鸡时,从左到右突出显示像素,直到我突出显示50%的像素.

有没有人有更好的想法?这是最慢,蛮力的想法,需要在每个像素上循环一次以计算像素并再次突出显示50%的像素.

请注意,垂直划分图片不会留下50%的火鸡,因为火鸡的身体比它的脖子更加肉质.

这是土耳其

Mah*_*dsi 3

你说百分比会改变,但我要冒险假设火鸡本身不会改变。

所以你不需要循环两次。您只需要做一次,将数据映射到您可以引用的某种结构形式,然后仅在每次需要突出显示时引用它以找出需要走多远。

例如,创建一个关联数组<percentage of mass (integer out of a hundred) => vertical column number (int)>

这样,当您需要对 x% 进行着色时,您只需要循环遍历像素的 cached_data[percent_to_highlight] 列,将它们全部着色,然后在到达它后完全跳出循环。


为了获得更好的性能,请准备两张图片 - 一张完全着色的图片和一张正常的图片。关联数组应该映射percentage => byte_offset

对于您希望生成的每个图像,只需 memcpy 或任何 PHP 等效项,即可从0 -> byte_offset着色图片到非着色图片的快速、范围复制并保存。不再循环。你不可能比这更快了。