Преобразовать BMPx32alfa в PNG с прозрачным фоном

Статус
Закрыто для дальнейших ответов.

musicstashall

Участник
Топикстартер
Сообщения
8
Реакции
0
Имеем изображение BMP x32bit с альфа-каналом.
В BMP черный фон в Explorer выглядит прозрачным, существует ли возможность конвертировать это изображение в формат PNG с прозрачным фоном, т.е. черный заменить прозрачными пикселями?
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Если там действительно есть какая-то информация в канале, то можно сделать альфу маской слоя.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Вот пример, прикрепил файл. Посмотрите пожалуйста, возможно ли что-то здесь сделать.
 

Вложения

  • 577.bmp
    577.bmp
    5.8 КБ · Просм.: 798
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Ну, как я уже сказал — альфу как маску слоя, save as png
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Можно тупо ручками поставить прозрачность на самых тёмных пикселах, делая Save for Web :)
 

Вложения

  • 577_transp.png
    577_transp.png
    2.3 КБ · Просм.: 1 375
  • save_f_web.png
    save_f_web.png
    11.7 КБ · Просм.: 945
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Не ну ежели тупо, то самый быстрый способ такой: я когда в картиночку сохранил, то первым делом F3 нажал в Total Commander, а по F3 у меня выскакивает Imagine на картинках, остается только пересохранить как png.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Спасибо всем! Все получилось!
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Скажите, а как сделать, чтобы кромка изображения более плавно переходила в фон за изображением, а то она как будто отгрызана, не ровная.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Это бахрома от черного фона. Академично: Layer > Matting > Remove Black Matte. Но, там еще есть Defrigne. На 1 пиксел попробуйте.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

А, да, в этом случае слоевой маски не должно быть. Нужно загрузить селекцию с альфа-канала - Ctrl+Click на его иконке - перейти в слои и вырезать по селекции в слой (Ctrl+J). Отключить фон и дефрижнать.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Zest, можно пожалста по-подробнее и на языке чайника:)
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Кажется предельно подробно. У вас там черный фон четко по границе альфа-канала. При вырезании по альфе происходит композиция цвета бывшего фона с цветом нового фона - куда вы кладете эту картинку. Выглядит как цветовая бахрома (color fringe).

Скажем пиксел альфы имеет значение 0.5 (нормализованное, то есть в диапазоне 0-255 = 127). Значит пиксел синего цвета станет наполовину прозрачным, то есть вместо 1 = 0.5 и пиксел цвета на который попадет этот синий тоже станет прозрачным наполовину. Эти "половины" и дадут результирующий цвет. В данном случае это смесь цвета пикселов изображения и фона.

Команда defrigne - как и следует из названия - переносит цвет полностью непрозрачных пикселов на указанное в пикселах расстояние на частично прозрачные. Например кнопка у вас голубая с черной каймой. Антибахрома (Defringe) берет цвет полностью непрозрачного пиксела, умножает его на альфу и закрашивает полученным соседний, отчасти прозрачный. Вероятно по эквидистанте границы.

Команды Remove Black (White) Matte действуют в точности по названию тоже: удаление черного заполнения заменяет цвет в частично прозрачных пикселах на белый; а удаление белого заполнения - соответственно на черный.

То есть это не заливка, конечно, белым (черным), а замена черного на белый (или наоборот) помноженный на значение альфы данного пиксела.

Статья: http://en.wikipedia.org/wiki/Alpha_compositing - не пробуйте переключиться на русский. Русские дизайнеры не осилили изложение.

Так подробнее?

В общем, открываете свой бмп, переходите на панель Channels (каналы). Там видите альфу. Загружаете с нее область селекции: Ctrl+Click на иконке канала. Появятся мураши. Переходите в панель слои (Layers). Из фона (background) по селекции вырезаете пикселы в новый слой (Ctrl+J). Фон - отключаете щелкнув ему по глазику. Видите черную бахрому. Теперь командуете Layer > Matting < Defrigne. Ставите 1 пиксел (по умолчанию) или 2, если хотите, жмете ОК. Сохраняете в ПНГ через Save for Web. Выберите там ПНГ и включите Transparency - галка.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Чтобы понятно было о чем речь смотрите на иллюстрацию: внутри области селекции есть пикселы цвет которых был помножен на альфу при композиции. То есть синий и альфа, скажем, 0.1, на черном фоне дали какой-то серый пиксель. Этот серый так и останется внутри вырезанного по альфе изображения. С этим поделать уже ничего нельзя: это результат суммирования и разделить как было до суммирования - невозможно.

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

Или извернуться на пупе и взять цвет соседних пикселов и как-нить распределить его по эквидистанте границы прозрачности. Также прежде умножая на альфу и заменяя.

Кликабельно:

frigne.jpg

UPD: Ну да, зачем Defrigne, если и так понятно что фон был - черный. То есть применяйте Layer > Matting > Remove Black Matte.

И вообще, кажется дефринж вообще тупо работает: расталдычивает на этот пиксель цвет плюя на альфу. Мило, блин!

Короче - Remove Black Matte.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

В принципе можно Remove Black Matte применить и ещё раз. Зависит от того, какую границу вы хотите.
Может на светлом фоне будет лучше смотреться.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Может на светлом фоне будет лучше смотреться.
Очень удобен в этом плане новый PhSh - можно быстро посмотреть на разных фонах и подправить.
 

Вложения

  • RefineEdge.jpg
    RefineEdge.jpg
    129.6 КБ · Просм.: 953
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Спасибо, целый урок! Но у меня Фотошоп на русском, блин, и мне не все понятно:) Вот отсюда и далее не понял:
Из фона (background) по селекции вырезаете пикселы в новый слой (Ctrl+J)
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

В принципе можно Remove Black Matte применить и ещё раз. Зависит от того, какую границу вы хотите.
Может на светлом фоне будет лучше смотреться.

Вы неправильно понимаете. Remove Black Matte не заменит черный на белый. Добавлением белого помноженного на альфу черный будет нивелирован. Если фон был чисто черный эта команда сделает все в точности как и требуется. А если светлее или вообще пестрый - то конечно, высветлит.

Вы путаете Matte в картинке индексного цвета, которая не поддерживает технологию альфа-канала. Там просто выбранный цвет "подкладывается" под альфу в качестве фона. Прозрачные пиксели в такой картинке это другой цвет индекс которого указывает на "прозрачный" цвет в палитре.
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Все понял. Получается и в том, и в другом случаях просто вырезание определенных пикселей. Но (!) я преследовал другую цель - возможно ли осуществить переменную степень прозрачности пикселей, имеющих в цвете черный цвет (0, 0, 0)? То есть если пиксел имеет цвет 0, 0, 0, то он полностью прозрачен, а если это серый какой-нибудь, то менее прозрачен, и т.д. Возможно ли будет отобразить прозрачную тень из bmp x32 alfa?
 
Ответ: Преобразовать BMPx32alfa в PNG с прозрачным фоном

Спасибо, целый урок! Но у меня Фотошоп на русском, блин, и мне не все понятно:) Вот отсюда и далее не понял:

Откуда я знаю как там по-русски у вас. Но шорткат Ctrl+J должен делать тоже самое и в русском ФШ.
 
Статус
Закрыто для дальнейших ответов.