Мне нужен способ найти координаты каждого пикселя с определенным цветом. Я мог бы прокручивать каждый пиксель во всем изображении и проверять, соответствует ли это, но это не кажется очень эффективным. Есть ли способ лучше?Найти координату соответствия холста HTML5 заданного цвета
0
A
ответ
2
Вам придется проходить через массив, поскольку это единственный способ оценить все пиксели в холсте.
Однако, вы можете использовать 32-разрядное целое число (набранный) массив вместо стандартного 8-битового массива - это будет во много раз быстрее:
var idata = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height),
buffer32 = new Uint32Array(idata.data.buffer),
len = buffer32.length,
i = 0, x, y,
color = 0xffffffff; /// white color (ABGR format on little-endian systems)
for(; i < len; i++) {
if (buffer32[i] === color) {
/// convert i to x/y position here
x = i % idata.width;
y = (i/idata.height)|0;
}
}
Смежные вопросы
- 1. HTML5 Изменение цвета холста
- 2. JQuery html5 изменение цвета холста
- 3. HTML5 Изменение цвета холста HEX
- 4. HTML5 холста передовых рамок
- 5. Html5 Алгоритм преобразования холста - поиск координат объекта после применения преобразования
- 6. Цвета холста «утечка»
- 7. HTML5 холста наложение прозрачные градиенты
- 8. HTML5 Различные значения цвета холста на разных машинах
- 9. HTML5 Инструмент ластик для холста без переупаковки белого цвета
- 10. Создание бесконечного холста HTML5
- 11. Найти координату по углу
- 12. Найти координату по пути
- 13. обнаружение дополнительного/противоположного цвета заданного цвета
- 14. Найти координаты пикселя цвета
- 15. настройка цвета фона холста
- 16. Сохранение данных холста HTML5
- 17. html5 удалить из холста
- 18. Улучшения производительности холста HTML5
- 19. HTML5 Линии стирания холста
- 20. Html5, JavaScript, анимация холста?
- 21. html5 тень трансформации холста
- 22. HTML5 сохранение холста
- 23. Прозрачный цвет холста HTML5
- 24. Перетаскивание символов холста HTML5
- 25. HTML5 Матрица трансформации холста
- 26. Позиционирование элемента холста HTML5
- 27. html5 полотна ширины холста
- 28. Динамическая анимация холста HTML5
- 29. Android-пикселизация холста HTML5
- 30. Понимание элемента холста HTML5
Вы пропустили запятую между у и ш на первом линия. Нужно ли использовать ABGR для цветового формата, или я могу использовать стандартный hex? Помимо 'ctx' и моего цвета, который я ищу, есть ли что-то еще, что мне нужно изменить, чтобы заставить его работать на меня? Спасибо. – Keavon
@Keavon с типизированным массивом вам нужно использовать ABGR (0xAABBGGRR в шестнадцатеричном представлении) для небольших систем endian (большинство систем с основным потоком сегодня мало endian, так что это не будет проблемой). RGBA для big-endian. Это потому, что это низкоуровневые (типизированные) массивы, и конверсии не будет (вы можете, конечно, использовать эквивалент шестнадцатеричного значения как 32-битное целое, если хотите). Помимо этого, нажимайте x и y на массив или создавайте объект, когда вы получаете удар, и вы должны быть добрым! – K3N
Если мне не нужна альфа, я могу использовать BGR? Или мне просто нужно положить 00 перед ним? Я никогда не слышал об ABGR раньше. Я просто добавляю 00, а затем два последних шестнадцатеричных символа моего кода HEX, а затем в середине два, затем первые два? – Keavon