如何将随机像素的不透明度设置为UIImage的0?

时间:2010-07-09 09:11:28

标签: iphone objective-c xcode sdk pixels

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

例如:

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

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

轻松实现:编辑像素的图像始终为320x480。我只使用风景!

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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%会给你一个连续出现的图像,而不会改变以前显示的像素。)

这不是一个确切的方法,所以除了“有趣”的应用程序之外,它不应该被用于任何东西。