【问题标题】:How to set the opacity of random pixels to 0 of a UIImage?如何将随机像素的不透明度设置为 UIImage 的 0?
【发布时间】:2010-07-09 09:11:27
【问题描述】:

我正在开发一个 iPhone 应用程序,该应用程序需要具有在某些操作后显示图像的功能。

例如:

我有 2 个 UIImages 在彼此之上。背面的 UIImage 是要显示的图像。顶部的 UIImage 需要覆盖此图像。我需要一种可以告诉我显示图像的方法。因此,如果我调用该方法,并且假设我将顶部 UIImage 的一半像素设置为参数 50(代表 50%),则需要将其设置为不透明度 0。我知道我必须将图像读入数据,然后我可以编辑像素。但是我需要编辑随机像素,否则如果我用 50 调用该方法,则图像的顶部已经可见。所以我需要将像素的不透明度设置为 0,但是是随机的。这会给你一种“雪”的效果,例如当我调用该方法并给出 100 作为参数时,这意味着 100% 的像素必须获得 0 的不透明度,因此完整的图片是可见的。

随机很重要,因为使用随机,这会慢慢显示图像,而不是显示一半的图像,因为乐趣已经结束了;-)

为方便起见:用于编辑像素的图像始终为 320x480。我只使用风景!

希望有人能帮助我,那太好了!

提前致谢!

【问题讨论】:

    标签: iphone objective-c xcode sdk pixels


    【解决方案1】:

    Check out the answer to this question. 这将告诉你如何编辑图像的像素数据。其余的只是逻辑。

    我会使用像 NSArray *alphaTable 这样的数组,其容量为 320*480(或来自图像大小的输入)。

    然后我会遍历那个数组,伪代码:

    static int totalRandomCount = 0;
    for (int i = 0; i< [alphaTable count]; i++) {
    
       if ( rand() > inputPercent && [alphaTable objectAtIndex:i] > 0.0f) {
           [alphaTable setValueAtIndex: 0.0f];
           totalRandomCount++;
       }
       if (totalRandomCount > [alphaTable count] * inputPercent) return;
    
    }
    

    这应该使以前的编辑保持不变。 (即,第一次通过 inputPercent 是 10%,然后是 25%,然后是 50%,然后是 90%,然后是 100%,应该会给您一个连续出现的图像,而不会改变之前显示的像素。)

    这不是一个精确的方法,所以它不应该用于任何“有趣”的应用程序。

    【讨论】:

    • 亲爱的斯蒂芬,感谢您的快速回复。你给我的链接我已经找到并实施了。但问题是生成数组需要很长时间。例如,我首先创建一个包含有效数字的数组: for(int i = 0, i
    • hoooookay,现在我很困惑。该数组应该只包含 alpha 值(不需要 i+=4)并且只有值 1 或 0,具体取决于该像素是否显示。否则,我不知道你在问什么。为什么要生成带有随机数的数组?
    猜你喜欢
    • 2011-07-02
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2014-09-05
    相关资源
    最近更新 更多