Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена цвета с отклонением 
:(
    Опции темы
newinjava
Дата 28.7.2011, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ATokS
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Ребята, помогите мне с функцией
Код

    public static BufferedImage replaceColor(BufferedImage img, Color mask, Color replacement, double digression){
        int width        = img.getWidth();
        int height        = img.getHeight();
        BufferedImage replacedImg = new BufferedImage(width, height, img.getType());
        // Bild kopieren
        replacedImg.getRaster().setRect(img.getRaster());
        
        // Suchen Pixel die ersetzen werden muessen
        for(int x=0; x<width; x++){
            for(int y=0; y<height; y++){
                // Wenn Pixel hat gesuchet Farbe
                // Dann ersetzen
                if(img.getRGB(x, y) == mask.getRGB()){
                    replacedImg.setRGB(x, y, replacement.getRGB());
                }
            }
        }
        return replacedImg;
    }


Нужно подключить параметр digression.
Этот параметр должен указывать отклонение которое может быть при замени цвета от 100.0% до 0.0%.

к примеру: искомый цвет AA0000 заменитель 00FF00
при 0.0% заменится строго AA0000 на 00FF00
при 100.0% полностью вся картинка будит одним цветом 00FF00
при 12.5% все цвета в промежутке (15.5% + AA0000 -15.5%), точно не знаю но дапустим от DD0000 до 880000, заменятся на 00FF00

Проблема в том что я незнаю как подойти к этой проблеме.
Я изночально хотел от FFFFFF получить RGB и взять его за 100%, а потом отнимать, пребавлять и сравнивать с заменителем. Но чтото не так то это просто. Получив RGB от FFFFFF у меня вышло отрецателное число, и вообще я заметил что весь RGB промежуток в отрецателной половине. Дак вот теперь я и не знаю как быть.

Думал ещё так: взять для красного 255 за 100% и также для зелёного и голубого, потом получать от каждого пикселя getRed, getGreen, getBlue и проверять с искомыми Red, Green, Blue включая отклонение. Но вот это приведёт к огромной работе компа, да и вобще я думаю подход кокой-то кривой.

Подскажите как мне быть? Как лучше реализовать функцию замена цвета с отклонением?
PM WWW   Вверх
aleksandy
Дата 28.7.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



Цитата(newinjava @  28.7.2011,  03:03 Найти цитируемый пост)
Получив RGB от FFFFFF у меня вышло отрецателное число

RTFM

Чтобы получить то, что ты хочешь, нужно сделать как-то так 
Код

if((img.getRGB(x, y) & 0x00FFFFFF) == (mask.getRGB() & 0x00FFFFFF)){
    // some code
}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.