Android-холст Размер растрового изображения и измерения - PullRequest
4 голосов
/ 05 апреля 2011

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

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

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

1 Ответ

0 голосов
/ 18 апреля 2011

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

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

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

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

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

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

...