Как установить непрозрачность случайных пикселей на 0 UIImage? - PullRequest
0 голосов
/ 09 июля 2010

Я работаю над приложением для iPhone, которое должно иметь функцию для показа изображения после некоторых действий.

Например:

У меня есть 2 UIImages друг на друга. UIImage на обороте - это изображение, которое нужно раскрыть. UIImage сверху должен покрыть это изображение. Мне нужен метод, который я могу рассказать, чтобы раскрыть изображение. Поэтому, если я вызываю метод и, скажем, я даю в качестве параметра 50 (что означает 50%), половина пикселей верхнего UIImage должна быть установлена ​​на непрозрачность 0. Я знаю, что мне нужно прочитать изображение данные, а затем я могу редактировать пиксели. Но мне нужно отредактировать случайные пиксели, иначе, если я вызову метод с 50, верхняя часть изображения уже видна. Поэтому мне нужно установить непрозрачность пикселей на 0, но случайно. Это даст вам своего рода эффект «снега», и, например, когда я вызываю метод и даю 100 в качестве параметра, это означает, что 100% пикселей должны иметь непрозрачность 0, поэтому полная картинка видна. *

Случайное важно, потому что при использовании случайного, это показывает изображение медленно, а не половину изображения, потому что чем веселье закончилось; -)

Для простоты: изображение для редактирования пикселей ВСЕГДА 320x480. Я использую только ландшафт!

Я надеюсь, что кто-нибудь может мне помочь, это было бы здорово!

Заранее спасибо!

1 Ответ

0 голосов
/ 09 июля 2010

Проверьте ответ на этот вопрос. Это расскажет вам, как редактировать данные пикселей изображения. Остальное - просто логика.

Я бы использовал массив типа 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%, чтобы получить постоянно появляющееся изображение без изменения того, какие пиксели отображались ранее.)

Это не точный метод, поэтому его не следует использовать ни для чего, кроме "веселого" приложения.

...