Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

Разработка » Что врет - это getImageData или это putImageData » 10-05-2013 16:41:13

Как вы справедливо заметили, я не ясно выразился. Перерисовывать весь холст, конечно же, не обязательно. Это оправдано далеко не всегда, то есть только если изменяется большая часть изображения на нём. Можно запросто менять лишь ту часть изображения, которая изменилась, хоть большую область, хоть 1 пиксель. Для каждой задачи можно найти несколько решений.

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

Так же можно заметить, что вовсе не обязательно работать с битовой картой изображения, можно использовать и глобальный альфа канал для различных буферных холстов, которые потом сводят в один главный.

Инструмент достаточно хорошо проработан, и уже написано довольно таки много различных фреймворков для работы с ним. А если использовать аппаратное ускорение при работе с контекстом webgl, то еще и скорость обработки будет настолько высока, что уже можно писать довольно амбициозные 3D приложения.

Разработка » Что врет - это getImageData или это putImageData » 09-05-2013 01:21:17

При работе с холстом есть одна особенность - он статичен. То есть если вы хотите сделать анимацию, то вам придется каждый раз перерисовывать весь холст заново.

В вашем случае это означает следующее:

Van пишет

...а если к примеру при некотором событии хочу в верхнем рисунке изменить прозрачность отдельных пикселей или групп произвольных пикселей, не квадратиков, чтобы просвечивалась нижняя картинка с 1.0 на 0.4 ?

То вам нужно будет перерисовать оба рисунка: нижнюю картинку и верхнюю с нужной вам прозрачностью хоть полностью, хоть частично.

Van пишет

и затем через время на 0.0 ?

И снова для этого нужно будет нанести на холст оба рисунка, предварительно его очистив, разумеется.

Van пишет

менять верхнюю картинку на другую заготовку? При плавном изменении прозрачности заготовок несколько потребуется.

Заготовку можете вычислять программно в javascript (можно хранить её в памяти, но чаще "дешевле" пересчитать из определенного состояния).

[url=http://itdom.org/tm

Разработка » Что врет - это getImageData или это putImageData » 07-05-2013 13:36:41

Если бы люди всегда делали только то, что нужно вам, или мне, или кому-то еще, а не им самим, то мир, наверное, был бы "серым" и унылым, зато аккуратным и стройным как муравейник или пчелиный улей.
Я стараюсь не быть столь категоричным в непонятных мне побудительных мотивах других людей.

То есть я хочу сказать, что подобное явление слишком распространено в человеческом обществе, чтобы заострять внимание на каком-то одном конкретном его проявлении.

Кто знает, может быть именно оно является причиной эволюции, её движущей силой.

Простой пример: зачем люди запекают яблоки, ведь они и свежие вкусные, причем, как говорят ученые, еще и гораздо более полезные?!

Разработка » Что врет - это getImageData или это putImageData » 07-05-2013 04:02:17

Прошу прощения, что не сразу понял суть вашего эксперимента.

Итак, по-порядку:

Van пишет

но я не могу понять почему так нельзя делать, ведь присваиваемые значения могут быть любыми? в т.ч. и упорядочеными по возрастанию/убыванию ?

Не совсем так. Те значения, которые вы присваеваете могут быть любыми, но они должны соответствовать принятому стандарту, и если вы будете присваивать им просто порядковые номера, то, хотя и смысла в этом не вижу, но все же записать так можно.

Ваша ошибка в том, что вы используете альфа-канал, не сразу понял описание, но вообще работать должно вот так (ссылка на оригинал):

whatwg.org пишет

The getImageData(sx, sy, sw, sh) method must, if either the sw or sh arguments are zero, throw an IndexSizeError exception; otherwise, if the scratch bitmap's origin-clean flag is set to false, it must throw a SecurityError exception; otherw

Разработка » Что врет - это getImageData или это putImageData » 04-05-2013 23:01:23

Я прошу прощения за археологизм, но на тему использования canvas пока мало информации на русском языке, поэтому напишу, что у вас ошибка в коде, вот здесь:

Выделить код

Код:

for(var j =0; j<cxy;j++) {   
   imDat.data[j] = j;               
}

Нельзя просто порядковые номера присвоить данным, а вы делаете именно это. Если поймете здесь свою ошибку, то и проблемы вами озвученной не будет в принципе.

Резюмирую:
То, что записываем в getImageData, то и получим при повторном извлечении их из того же самого getImageData.

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]