Размер и измерение растрового изображения на холсте Android

#android #canvas #bitmap #collision-detection #inkscape

#Android #холст #растровое изображение #обнаружение столкновений #inkscape

Вопрос:

У меня есть изображение в формате PNG, которое я редактирую в Inkscape. Это неправильная, неровная форма, но мне нужно выполнить обнаружение столкновений с ней. Оно слишком большое, чтобы сделать вокруг него грубую прямоугольную рамку (оно занимает больше, чем стандартный экран телефона).Итак, я рисовал прямоугольники в INkscape вокруг него и записывал размеры в пикселях этих прямоугольников.

Я намерен использовать объединение этих «воображаемых» прямоугольников для обнаружения столкновений. Однако мои усилия натолкнулись на препятствие. Размер изображения по умолчанию на телефоне, похоже, отличается от размера в Inkscape.

Я хочу знать, как наилучшим образом обнаруживать столкновения с большим объектом неправильной формы и / или как сделать так, чтобы размеры растрового изображения canvas совпадали с его размерами в пикселях (или мм).

Ответ №1:

Что я предлагаю сделать, так это создать эквивалентное изображение, где вы определили область столкновения значением 1, а область отсутствия столкновения значением 0 (или 0 и 255).

Итак, у вас будет два изображения: цветное, которое вы будете отображать, и изображение столкновения, которое вы будете загружать.

Затем вы можете определить, находитесь ли вы внутри области столкновения с:

 Bitmap collision;
collision = BitmapFactory.decodeStream(...yourImage...);
collision.getPixel(x,y)
  

Другим решением является создание двух массивов после обработки изображения столкновения, вы могли бы сделать это, создав Java-приложение, которое обрабатывает ваше исходное изображение и создает текстовый файл с двумя строками, первая строка — координата x, а вторая строка — пара координат y.

Затем прочитайте этот файл в своем приложении для Android, и если ваши x и y существуют в этом массиве, это точка столкновения.