[Java] Наложение одного изображения поверх другого
В голову пришло только одно быстрое решение. Попробуй сделать BufferedImage с твоими данными, типа BufferedImage.TYPE_INT_ARGB, затем пройдись по нему с помощью getRGB построчно и замени alpha у ключевого цвета на 0.
Фон там, по идее, прозрачный.У того что ты выложил фон вполне себе присутствует.
Попробуй сначала фон правильным сделать, может всё остальное тоже заработает.
ЗЫ Яву не знаю
То есть мне для каждого пикселя исходного изображения следует получить это значение, проверить, не является ли этот цвет цветом фона (ну под это есть один из конструкторов класса Color, ок)... Ну и если является, то что дальше? Как назначить ему apha = 0 и вписать в новое изображение на соответствующее место?
не программными средствами можно это сделать? я имею, в виду, в сторонней проге, фотошопе, например. Не знаешь, как?
Заменить однородный цвет на прозрачность? В фотошопе? Издеваешься?
Ну и если является, то что дальше? Как назначить ему apha = 0 и вписать в новое изображение на соответствующее место?Если является, то вписать прямо в массив новое значение.
Сделал тебе альфа-канал в ФШ, лови. Второй файл был вообще не RGB.
Ну в общем, да, действительно достаточно было удалить фон. Зря я заморачивался насчет программной обработки, все теперь ок.
Я просто и правда плохо в этом деле разбираюсь, думал почему-то, что факт прозрачности фона не означает, что он не будет отображаться в программах-просмотровщиках... Непонятно только, зачем в этих тайлсетах фон присутствует, если он все равно потом, видимо, программно исключается.
Мне показали как в фш удалять фон следующим образом: magic wand'ом ткнуть в фон, потом правой мышкой - Select Inverse, скопировать выделение в новый слой и удалить старый.
Как еще можно это сделать?
Непонятно только, зачем в этих тайлсетах фон присутствует,Потому что тогда не используется канал прозрачности - многие старые программы не умеют декодировать картинки с прозрачностью или прозрачность не поддерживает сам графический формат.
Как еще можно это сделать?Большинство примитивных программ просмотровиков (acdsee, irfanview, xnview, etc) умеют сохранять png с прозрачным фоном - для этого надо всего один раз ткнуть на картинку в этот самый фон, или же просто проставить галочку "считать цвет левого верхнего угла прозрачным". Это намного легче и быстрее, чем мучать для этого фотошоп.
Оставить комментарий
stm6695895
В /с/ мне не ответили, попытаю счастья тут.Вопрос, в общем, простой, но мне надо узнать, как это делается конкретно в яве.
Суть вопроса иллюстрирует следующая картинка:
Тайлы (все какие тут есть, стены, пол, мобы и главгер) - все не мои, одолжены из других игр. Тайлсеты, из которых я их взял, имеют формат *.png На всякий случай, вот они:
Фон там, по идее, прозрачный. Во всяком случае, в тех играх, где они используются, фон картинок отсутствует, например:
Но мне, почему-то, избавиться, от него так и не удалось. Я, в целом, не особо шарю во всех этих альфа-каналах, прозрачности итд. Сегодня все утро пытался самопросветиться, но так что-то ничего путного ине вышло...
Короче, прошу совета. Что надо сделать, чтобы у тайла фон заполнялся бекграундом?
Сейчас тайлы гружу командой
выводу на экран командой: