Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.02.2014, 20:03
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 1  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
По умолчанию PNGEncoder проблема с альфой

Lib:
mx.graphics.codec.PNGEncoder

Есть задача поместить значение цвета A+RGB с нулевой альфой (Например: 0,127,127,127).
Но он, видимо для оптимизации веса, игнорирует такую запись и ставит все по нулям (0x0).
Может у кого есть мысли как это обойти?

P.S. Нашел PNGEncoder2 на HAXE с исходниками - работает так же. Но найти там это условие и поменять его, не тривиальная задача. К тому же Photoshop такие PNG с легкостью сохраняет.

Старый 06.02.2014, 21:16
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Попробуйте BitmapData.encode()
Автоматически берёт альфу из битмапдаты.

Старый 06.02.2014, 22:40
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 3  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
Попробуйте BitmapData.encode()
Пробовал, не катит. Судя по размеру файлов это одно и тоже.

Старый 06.02.2014, 23:31
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
var bmd:BitmapData = new BitmapData(1, 1, true, 0x00808080);
var p:uint = bmd.getPixel32(0, 0);
trace( "p : " + p ); //0
беда не в кодировщике, а в самом BitmapData, любой енкодер получит этот ноль на входе
т.е. обойти можно только какими-то внутренними 'договоренностями', типа ставить не ноль, а 0x01, ну и как-то учитывать при дальнейших манипуляциях
к слову, а для чего именно такой png ( 0,127,127,127) может сгодится ?

Старый 07.02.2014, 00:40
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
водяной знак)))
__________________
Reality.getBounds(this);

Старый 07.02.2014, 01:31
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 6  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
а для чего именно такой png ( 0,127,127,127) может сгодится ?
Есть одна тайна как улучшить качество PVRTC 4bpp текстур. Если залить все пустые места RGBA (0,127,127,127), то артефактов на резких границах почти не будет. Выгода впечатляющая. Атласы генерирую из AS3.

Старый 07.02.2014, 03:05
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если лень разбираться с алгоритмом енкодера, можно просто сделать постобработку, пробежаться по нужному чанку и заменить все ноли на нужное число.
И плевать на битмапдату)
Вопрос только в том, что будет после загрузки файла обратно. Из "правильного" пинга будет создана неправильная битмапдата?
__________________
Reality.getBounds(this);

Старый 07.02.2014, 12:23
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 8  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
Вопрос только в том, что будет после загрузки файла обратно
Ну мне благо не нужно эту PNG обратно грузить, она только для последующего переведение в PVR -> ATF.

Найдено решение, пришлось обработать ByteArray с пикселями:
Код AS3:
var pvrColor:uint = combineARGB(0, 127, 127, 127);
var ba:ByteArray = source.getPixels(source.rect);
ba.position = 0;
while (ba.bytesAvailable)
{
	if (!ba.readUnsignedInt())
	{
		ba.position -= 4;
		ba.writeUnsignedInt(pvrColor);
	}
}
P.S. Это конечно гадство, что BitmapData съедает данные

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.