Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2017, 17:25
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

Объект из точек
Я только начинаю разбираться в JS, поэтому банальная история стала для меня проблемой. Но хочу разобраться по возможности сама.
Итак, задача.
Есть некая картинка (например буква, цифра или произвольная с неровными краями) и мне бы хотелось заполнить ее с помощью скрипта цветными точками.
Вот как на картинке "S"


Понимаю, что надо создать эту точку, которая будет "ставится" и задать ей возможности изменения (допустим цвет в массиве)
Но вот как определить область, где точка может появляться (допустим букв несколько в одной картинке) не знаю.
Подскажите как решить такую задачу.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2017, 18:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Так понятно будет https://cdn1.savepice.ru/uploads/201...14378-full.gif ?
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2017, 22:44
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

laimas,
то ли у меня гиф не воспроизводится, то ли не понятно. Буквы просто белые на черном фоне. Или может быть я бестолково объяснила.
Мне нужно, чтобы внутри буквы с помощью скрипта появлялись другие фигуры (например, точки) но строго в контуре буквы. Как кляксы в S на картинке


Я могу понять, как отрисовать нужную область с помощью Canvas Но как задать ее для области применения скрипта не понимаю.

Последний раз редактировалось Bicou, 05.12.2017 в 22:51.
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2017, 23:23
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Шутка :)</title>
</head>
<body>
	<div ><img src="http://i.piccy.info/i9/57282bf6f05c9c52c009ad5cc31593d7/1512505065/23584/1198225/1.jpg" class="img wheel"> <img class="img s" src="http://i.piccy.info/i9/4a0a5cd907e989d8df088e55836b8549/1512505097/21131/1198225/s.png" alt=""></div>

	<style>
	div{
		width: 100px;
		height: 100px;
		position: relative;
		overflow: hidden;
	}
	img{
		width: 100px;
		position: absolute;
	}
	.s{
		z-index: 999;
	}
	.wheel {
		animation-name: spin;
		animation-duration: 30000ms;
		animation-iteration-count: infinite;
		animation-timing-function: linear;
		z-index: 100;
	}
	@keyframes spin {
		from {
			transform:rotate(0deg);
		}
		to {
			transform:rotate(360deg);
		}
	}
</style>
</body>
</html>

Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2017, 23:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Bicou
то ли у меня гиф не воспроизводится
Это не анимация. Вам же надо определить области, а делается это так:

- изображение переводится в градации серого
- добавляется яркость и контрастность таким образом, чтобы "вырезать" детали на изображении (например полос на w, t и точек на s теперь а нем нет)
- в цветовой модели HSB задается некий порог черного с которым сверяется (в этой же цветовой модели) считанные значения пикселей изображения и если они превышают порог, то это область в которой рисуем

Если ваше исходное изображение практически готовая маска, то есть нет лишнего на нем, то преобразования можно пропустить. Только, если это одноразовая задача тогда клиент, но если таким образом нужно "раскрасить" массу изображений, то выгоднее делать это сервером один раз при загрузке на него изображения.
Ответить с цитированием
  #6 (permalink)  
Старый 06.12.2017, 00:02
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

void(), спасибо, про маски не додумалась, но не совсем то. Хотя попытаться можно)

laimas, меня скорее интересовало можно ли (и если можно, то как) определить некую область (ну допустим отрисовать фигуру через canvas (Это то, что я как-то освоила, отсюда предположение) и скриптом оперировать с получившейся областью. Добавлять в нее объекты, чтобы они не заходили за край области
Т.е. чисто технически нужно будет пройтись по фигуре с шагом в несколько пикселей и сравнить есть ли в данных координатах фигура. Если есть, то туда ставить объект, если нет, то объект не ставить. Вот только не могу понять как эту область задать.
Или как вариант, выставлять объекты по некой ломаной линии. Использовать ее как траекторию (не в смысле движения по ней, а как ниточку для бус)
Изображения:
Тип файла: jpg k16345072.jpg (72.6 Кб, 2 просмотров)

Последний раз редактировалось Bicou, 06.12.2017 в 00:15.
Ответить с цитированием
  #7 (permalink)  
Старый 06.12.2017, 00:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Bicou,
https://developer.mozilla.org/ru/doc...Context2D/clip

https://developer.mozilla.org/en-US/...ositeOperation

Последний раз редактировалось рони, 06.12.2017 в 00:23.
Ответить с цитированием
  #8 (permalink)  
Старый 06.12.2017, 00:40
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

рони,
т.е. с помощью .clip (FillRule); можно проверить принадлежит ли точка области и если да, то поставить свой объект? Я правильно понимаю?
Ответить с цитированием
  #9 (permalink)  
Старый 06.12.2017, 00:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Bicou,
я думал есть некое фото, на котором нужно найти области.
Ответить с цитированием
  #10 (permalink)  
Старый 06.12.2017, 00:48
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Bicou,
я думал есть некое фото, на котором нужно найти области.
В общем и целом да. Но области должны быть прозрачными) Т.е. вот в исходнике с буквами: допустим что буквы должны состоять из набора "клякс", а фон вокруг них оставаться прежним (и допустим, что он какой-то цветной) и таких мест на страничке несколько)

Я чуть выше вставила картинку с пояснением, чего хочу от скрипта)

Последний раз редактировалось Bicou, 06.12.2017 в 00:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полностью удалить объект 1lider Events/DOM/Window 8 07.06.2018 18:20
Добавить объект в другой объект фонарик Общие вопросы Javascript 5 11.10.2015 01:57
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45