Разбор сгенерированного Java-изображения в приложении Android - PullRequest
0 голосов
/ 16 ноября 2011

Я делаю приложение, которое отображает изображение комнаты.Когда пользователь щелкает изображение, появляется изображение со словом объекта, и устройство произносит имя.Для этого я загружаю изображение шаблона с цветными блоками в местах расположения объектов и текстовый файл с различными именами объектов, сопоставленными с конкретным цветом блока.

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

Вот код Java для создания / сохранения изображения:

    BufferedImage i = new BufferedImage(img.getWidth(), img.getHeight(),        
            BufferedImage.TYPE_INT_RGB);
    Graphics g = i.getGraphics();
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, i.getWidth(), i.getHeight());  

    //draw all the rectangles on the image
    for(Rectangle r: rects.keySet()){
        g.setColor(rects.get(r));   
        g.fillRect(r.x, r.y, r.width, r.height);
    }

    //write the BufferedImage to the file
    try {
        ImageIO.write(i, "png", saveTo);
    } catch (IOException e) {
        e.printStackTrace();
    }

КогдаЯ открываю картинку в Photoshop, Paint и т. Д., И она проверяет, что цветные блоки соответствуют цвету, который они должны быть.

Когда я загружаю их в устройство Android, они не совпадают с цветом.Они различаются в диапазоне от 1-3 для каждого цвета (поэтому цвет, равный 25: 0: 0, читается как 24: 0: 0 или, возможно, 22: 0: 0).

На устройствеЯ загружаю изображение как растровое изображение и использую TouchEvent.getX () и getY (), чтобы найти положение на изображении.Затем я использую Bitmap.getPixel (x, y) для получения определенного цвета.

Если я использую такой редактор, как Photoshop или Paint, я получаю отличные изображения, которые читаются как обычно.Мой пользователь попросил создать собственное приложение-редактор, чтобы оно также могло создать файл конфигурации.

Извините, что так долго, и спасибо за любую помощь!

1 Ответ

1 голос
/ 16 ноября 2011

Загрузка цветного блока в качестве актива, а не ресурса. Android сжимает и повторно упаковывает растровые изображения в папке ресурсов, чтобы минимизировать их размер. Я считаю, что сжатие - это то, что заставляет ваши цвета смещаться.

Может быть интересно получить изображение с устройства с помощью ADB, чтобы увидеть, действительно ли изображение на устройстве отличается. Я ожидаю, что это так.

Растровые изображения, содержащиеся в папке ресурсов, вообще не обрабатываются. Используйте их для изображений, которые необходимо поддерживать в их нынешнем качестве.

...