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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.03.2012, 14:06
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 1  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
По умолчанию Отправка на сервер png24 с прозрачностью

Приветствую. Есть следующая система:
Через FileReference во флешку загружается изображение, добавляется в displayList, обрезается.
Далее через BitmapData.draw() рисуется обрезанное изображение.
Затем битмапдата перегоняется в ByteArray через PNG24 ecnoder, этот ByteArray кодируется через Base64 и отправляется на сервер.

Проблема в следующем: после приёма изображения сервером в случае, когда должна быть прозрачность, её нет.
Если в конструкторе битмапдаты не задать цвет fillColor, прозрачности нет ни во флеше, ни на сервере.
Если задать этот цвет, то во флеше прозрачность есть, а в файле на сервере её нет.

Возможно ли решить эту проблему?

Старый 02.03.2012, 14:20
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Раскодируйте из декодера и посмотрите во флэш - есть прозрачность? Если нет - декодер кривой, менять. Раскодируйте из Base64 - есть прозрачность?...
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 02.03.2012, 14:33
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 3  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Код AS3:
Далее через BitmapData.draw() рисуется обрезанное изображение.
BitmapData.draw() - убиват прозрачность
__________________
ЛОДКИ

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Сообщение от -De- Посмотреть сообщение
Раскодируйте из декодера и посмотрите во флэш - есть прозрачность? Если нет - декодер кривой, менять. Раскодируйте из Base64 - есть прозрачность?...
Проверил то и другое. Прозрачность есть.
Цитата:
Сообщение от FlashRus Посмотреть сообщение
BitmapData.draw() - убиват прозрачность
Как-то подругому мою задачу решить можно?

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

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Цитата:
BitmapData.draw() - убиват прозрачность
Не обязательно. При инстанцировании BitmapData третий параметр конструктора должен быть равен true, а четвёртый - 0. При вызове метода draw экземпляра в четвёртый параметр этого метода должно передаваться значение flash.display.BlendMode.ALPHA. Например так
Код AS3:
import flash.display.BlendMode
function drawMe(source:IBitmapDrawable):BitmapData {
  var toReturn:BitmapData = new BitmapData(source.width, source.height, true, 0);
  toReturn.draw(source, null, null, BlendMode.ALPHA);
  return toReturn;
}
__________________
Дебаггер не предлагать

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Код AS3:
При инстанцировании BitmapData третий параметр конструктора должен быть равен true, а четвёртый - 0
У меня собственно так и есть. А BlendMode.ALPHA вообще убивает изображение. Отображается только прозрачность и непрозрачность.

Дело в том, что во флеше то всё нормально, а после отправки на сервер прозрачности нет. Может косяк в серверной части?

Старый 02.03.2012, 15:01
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Попробуйте полученный ByteArray сохранить не загружая на сервер и посмотреть, сохранит ли он нормальный пнг (возможно полученный пнг можно нормально раскодить только этим декодером, т.е. он кривой). Если нет - смотреть на раскодировние у пхп. Вообще попробуйте декодер сменить, в нём что-то не то, по-моему.
BitmapData.draw() - не убиват прозрачность, делает ровно то, что написано, рисует поверх не перерисовывая альфу, а нормально складывая. Если у вас fillColor без прозрачности, то ясен пень потом непрозрачное изображение получится. BlendMode.ALPHA не рисует цвет вообще) Им как раз можно перерисовать альфу.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
можно нормально раскодить только этим декодером
Мне вообще не попадались png раскодировщики. Можно ведь через Loader.loadBytes изображение вытащить. Я использую библиотеку blooddy_crypto

Цитата:
Попробуйте полученный ByteArray сохранить не загружая на сервер и посмотреть, сохранит ли он нормальный пнг
Сохранился нормальный png24 с прозрачностью.

Старый 02.03.2012, 15:19
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от illuzor Посмотреть сообщение
Сохранился нормальный png24 с прозрачностью.
Отлично, значит передача чудит. Проверяйте цепочку бинарник -> Base64 -> полученный Base64 -> бинарник. От каждого мд5 там посчитать какой надо, какой есть или что. Бинарники должны быть одинаковы.
Может, в пхп файл в текстовом режиме открыли или чо )
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

Теги
BitmapData.draw , png24

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

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


 


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


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