![]() |
Lib_alpha: Прозрачность картинок
Я щас пишу библиотеку поддержки альфа-уровней для картинок.
Для тех кто не понял: по идее можно делать произвольную прозрачность для картинки, скажем 60%. Уже практически всё написано, запнулся только на одной ошибке. Вот текст моей библиотеки на Java: Код:
import javax.microedition.lcdui.Image; Текст проверочной программки на MP: Код:
Program AlphaTest; |
Ответ: Lib_alpha: Прозрачность картинок
Не знаю, у меня на SE все работает без ошибок, правда картинка какая-то синюшная получается.
|
Ответ: Lib_alpha: Прозрачность картинок
odd, а можете этот код сделать в библиотеку? а то компилятора нет. А библиотека такая нужна. Пусть даже если не совсем доработанную.
|
Ответ: Lib_alpha: Прозрачность картинок
Да похоже она вообще не работает.
Картинка получается такая, как будто изменяется не alpha-канал, а канал синего. |
Ответ: Lib_alpha: Прозрачность картинок
ViNT, ну выложи class файл. пожалуйста.
|
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Вот, но похоже она делает не то, что нужно.
|
Ответ: Lib_alpha: Прозрачность картинок
Что-то не так. У меня на SE K550i вобще не запускается. А в эмуляторе пишет, что ошибка валидации класса. Ещё мозгую над проблемой...
|
Ответ: Lib_alpha: Прозрачность картинок
А чем компилил?
Я иногда пытался компилить либы напрямую через javac (из wtk), так он мне тоже часто(но, что интересно, не всегда) писал ошибку верификации класса, хотя компиляция проходила нормально. Сейчас компилю через JB, все нормально, только изображение явно получается с измененным каналом синего, как будто не на тот байт маска накладывается. |
Ответ: Lib_alpha: Прозрачность картинок
Код:
Program AlphaTest; |
Ответ: Lib_alpha: Прозрачность картинок
Ну так, от 1 до 255 повышаем значение BB байта, получаем все более синюю картинку.
|
Ответ: Lib_alpha: Прозрачность картинок
формат цветности aarrggbb, т.е. четыре байта. вы сдвигаете на 64 бита - это 8 байт, т.е. получается 2 раза по кругу.
|
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Я уже сделал по-другому. Ошибки валидации теперь нет.
Правда и прозрачности я тоже не увидел :( Код:
import javax.microedition.lcdui.Image; Код:
Program AlphaTest; |
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Извиняюсь, что вмешиваюсь :( , но как-то у вас тут все затянулось.
Правда проверял только на Мотороле. |
Ответ: Lib_alpha: Прозрачность картинок
Добавил все новые библиотеки в список.
|
Ответ: Lib_alpha: Прозрачность картинок
Гениально. Оказывается нужно было просто добавить маскировку and 0x00FFFFFF.
На SE пашет. Добавил библиотеку в коллекцию. Спасибо, pilgrim! |
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Добавил ещё функцию SetTransparentColor.
Скажем, у вас есть картинка im с белым фоном. Делаем: SetTransparentColor(255, 255, 255); im = SetOpaque(im, 255); И получим ту же картинку, но уже с прозрачным фоном. То же касается и полупрозрачных картинок. Если раскинуть мозгами, можно теперь делать довольно интересные графические эффекты в играх. |
Ответ: Lib_alpha: Прозрачность картинок
я тут попробывал сделать мидлет, с использованием твоей библиотеки, но в результате получил что он не загружает картинку, а выводит почему-то только фон..
Не подскажешь, в чём ошибка? Код:
program hello; |
Ответ: Lib_alpha: Прозрачность картинок
Ну так 255 это же полная прозрачность?
Вот и получается, что каждый раз в цикле изображению ставится полная прозрачность и его не видно. К тому же я сомневаюсь, что белый пиксель с наложенной альфой будет соответствовать чисто белому пикселю. |
Ответ: Lib_alpha: Прозрачность картинок
ViNT, ну если тогда подумать то оно бы должно было медленно переходить из обычной картинки в прозрачную. Но этого почему то не происходит, хотя я там задержку же поставил...
попробую еще похимичить |
Ответ: Lib_alpha: Прозрачность картинок
Где ж оно будет переходить если написано:
load_image := alpha.SetOpaque(load_image,alpha.GetAlphaLevels);? Во-первых, нужно поставить i вместо выделенного, во-вторых, картинку каждый раз нужно грузить снова, т.к. он уже после первой обработки не содержит ни одного белого пиксела. Тогда уж так: Код:
uses alpha; |
Ответ: Lib_alpha: Прозрачность картинок
уф, логику нарушил. спс )
|
Ответ: Lib_alpha: Прозрачность картинок
А можно в стелать процедуру в библиотеку, что бы она меняла в картинке определенный цвет на другой?
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
Кстати, для новичков: GetAlphaLevels по-идее возвращает 256 в то время как максимальная принимаемая функцией SetOpaque прозрачность равна 255. Намёк ясен? Кстати, в функции SetTransparentColor порядок цветов нарушен. Надо RGB, а там BGR какой-то получился. :) Пофиксю одновременно с выходом функции замены одного цвета на другой. |
Ответ: Lib_alpha: Прозрачность картинок
Класно!, буду ждать :) спс
|
Ответ: Lib_alpha: Прозрачность картинок
odd, советую в новой версии сделать возможность задания прозрачного/заменяемого цвета в формате ARGB, а не RGB, и функцию для определения цвета указанного пикселя в ARGB формате.
|
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
Вложений: 1
Как и обещал, всё сделал. Держите.
Пример выполнения: Код:
Program AlphaTest; |
Ответ: Lib_alpha: Прозрачность картинок
Отличная библиотека, но бесит тот факт, что если в картинке уже есть прозрачность, то SetOpaque ее полностью убирает ):
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
Ещё неплохо бы задавать прозрачность в функциях в процентах(0-100), а не числом(0-255). Хотя в принципе и так сойдет, спасиб за библу =)
|
Ответ: Lib_alpha: Прозрачность картинок
Odd, добавь пожалуйста в свою либу функции(ю) изменения уровней R,G,B каналов, очень надо=)
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
Можно и такой вариант, если не трудно.
А я имел ввиду что-то вроде этого: Код:
.... |
Ответ: Lib_alpha: Прозрачность картинок
Ладно, я попробую такое написать. Но можно обойтись и без всего этого.
Просто, допустим, тебе надо чтобы экран постепенно покраснел. Делаешь снимок экрана и в цикле генерируешь красный прямоугольник размером с экран. Причем у этого крассного прямоугольника цвет должен быть как и обычно FF0000, а вот прозрачность постепенно будет меняться от 0 до FF (шаг подберешь сам). Теперь просто выводишь свой снимок, а поверху его выводишь сгененрированный прямоугольник. Всё просто. Ах да. За генерирование прямоугольника отвечает функция CreateCursor из либы Menu32. Если у тебя есть главное меню в программе, то эту либу и не надо добавлять. |
Ответ: Lib_alpha: Прозрачность картинок
Я рассказывал, как мой сименс забавно реагирует на полупрозрачность? =)
|
Ответ: Lib_alpha: Прозрачность картинок
Срочно нужна функция обратная Alpha.TranslateColor(a,r,g,b).
Или расскажите как из ARGB-формата вытащить R, G и B. Вот примеры основных цветов: BLACK=-16777216; MAGENTA=-65281; BLUE=-16776961; RED=-65536; GREEN=-16711936; Я хз чё с ними делать. |
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
разобралси: Чтобы перевести ARGB в RGB надо прибавить к нему 16777216, а потом уж вытигивать цвета div'ом и mod'ом.
Это будет работать для непрозрачных цветов, с полупрозрачными может быть и нет. Кому надо, вот соответствующие функции на MP: PHP код:
|
Ответ: Lib_alpha: Прозрачность картинок
А ещё легче это делать с помощью библиотеки Lib_bits. Тогда весь код в одну строчку уместится. Что-то типа такого:
PHP код:
|
Ответ: Lib_alpha: Прозрачность картинок
Мне бы такая либа на блитзе не помешалаб. Ни кто мне с этим не сможет помоч?)
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
PHP код:
Код на паскале, думаю по комментариям понятно. А вообще, неужели в блитзе нет подобной функции? |
Ответ: Lib_alpha: Прозрачность картинок
Код:
А вообще, неужели в блитзе нет подобной функции? |
Ответ: Lib_alpha: Прозрачность картинок
А можно в данной библиотеке реализовать, что-бы можно было указывать чувствительность ReplaceColor? А то данная функция очень полезна для смены, к примеру, фонов изображения, но заменяет только конкретный цвет, что при замене оставляет не закрашенные пиксели другого оттенка, но того же цвета, что негативно влияет на однородность закраски.:)
|
Ответ: Lib_alpha: Прозрачность картинок
Гм. Реализовать-то можно, но скорость замены цвета сильно упадет.
Может легче обработать картинку в фотошопе и заменить цвет на однородный? |
Ответ: Lib_alpha: Прозрачность картинок
Цитата:
|
Часовой пояс GMT +4, время: 19:36. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot