Php 如何切半只感恩节火鸡?

Php 如何切半只感恩节火鸡?,php,image-processing,Php,Image Processing,我有一个很酷的问题。我想强调的是这只火鸡50%的重量。实际上,这不会是50%,但如果我能得到50%,我可以算出其余的 我目前的想法是:扫描每个像素,找出火鸡的质量,以像素为单位。然后,当我想要50%的火鸡时,从左到右高亮显示像素,直到我高亮显示了50%的像素 有谁有更好的主意吗?这是最慢、最暴力的想法,需要在每个像素上循环一次以计算像素,然后再次突出显示其中的50% 请注意,垂直分割图片不会留下50%的火鸡,因为火鸡的身体比脖子肉多 你说百分比会改变,但我在这里冒险,假设火鸡本身不会改变 所以你

我有一个很酷的问题。我想强调的是这只火鸡50%的重量。实际上,这不会是50%,但如果我能得到50%,我可以算出其余的

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

有谁有更好的主意吗?这是最慢、最暴力的想法,需要在每个像素上循环一次以计算像素,然后再次突出显示其中的50%

请注意,垂直分割图片不会留下50%的火鸡,因为火鸡的身体比脖子肉多


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

所以你不需要循环两次。你只需要做一次,把数据映射成某种形式的结构,你可以引用,然后每次你需要突出显示的时候只引用它来计算你需要走多远

例如,创建一个
垂直列编号(int)>

这样,当需要对x百分比进行着色时,只需循环缓存的像素列的_数据[percent_to_highlight],对所有像素进行着色,然后在到达该列后完全中断循环


要获得更高的性能,请使用两张图片-一张完全着色的图片和一张正常的图片。关联数组应映射
percentage=>byte\u偏移量


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

这个问题看起来并没有一个聪明的算法在我的脑子里运行。但我不是CG方面的专家,所以我可能在这方面错了

如果最终使用n上的嵌套循环,那么试图寻找这样的解决方案会大大增加时间复杂度(比O(n)),其中n是土耳其使用的像素总数

相反,采用双通道方式非常容易实现(实现的时间/精力非常少),并且忽略了常数2,这是一个不错的解决方案。
取决于您编写此解决方案的目的、硬件、空间限制等;走两条路可能会更有回报。

投票结束这一进程的人。。这是一个严重的问题。我正试图制作一张信息图,根据一定的百分比给火鸡上色。@DanRedux:但在它目前的状态下,这不是一个编程问题。你只是在问方法;你会怎么做呢。这对程序员来说更重要。你确定要突出显示50%的像素而不是某些线性度量的50%吗?我不认为人们善于通过观察复杂的形状来判断体积或面积。事实上,这是我已经在做的。。我应该指定,但是的,如果我在做我的方法,我会把它转换成一个像素流,然后它们流一定比例的像素。如果你做的正是我发布的。。。如何才能获得比O(N/x)更好的性能,其中x是需要着色的数量的倒数?可能通过使用某种我可以高亮显示的像素树/矩阵。。。比如,如果我要求10%,我当然可以选择一些快捷方式,而不是在10%的像素中循环并绘制它们。。我正在考虑任何其他格式,使其小于O(n/x)。。