|
|
|||||
"Аинслей"
|
mdm.Image.bmpToPng с прозрачностью
Доброго времени суток.
Наблюдаются какие-то странности в цинке третьей версии. Одна из задач моего приложения -- сохранять скрин экрана с последующей возможностью его загрузки в себя. Сохранять хочу в PNG с прозрачностью. Поначалу все хорошо -- скриню, сохраняю в бмп, конвертирую в PNG с заданием прозрачного цвета "white". Проверяю картинку -- пнг получился, но прозрачности нет. Для чистоты эксперимента открываю в фотошопе. Фотошоп ругается, что неверный формат файла и не открывает. Flash IDE так же ругается на файл и не импортирует его. Кто-нибудь сталкивался с этим? В их багрепорт отписал. Ответа пока нет. Тестировал в 2.5 -- так конвертирует корректно. Хоть и с плохим качеством. Но 2.5 не могу использовать по техническим причинам (какой-то из модулей цинка с ошибкой, пофиксенной в третьей версии) Использую цинк 3.0.3. Тестировал так же в 3.0.11
__________________
Мы не съедобны. |
|
|||||
listener
|
Если это и вправду баг версии (что вполне вероятно), то остается только ждать, пока его пофиксят.
Но вот это срабатывает у меня нормально: (Zinc 3.0.0, AS2, FP8) Качество не очень. Фотошопом открывается корректно, во Flash IDE импортируется, прозрачность есть. .bmp-исходник, правда, был "рожден" не скрином цинка. Последний раз редактировалось alexcon314; 12.11.2008 в 15:30. |
|
|||||
"Аинслей"
|
интересно, интересно получается..
делаю раз: Тестирую, работает. делаю два: mdm.Image.ScreenCapture.movieToBmp("e:\\test.bmp"); mdm.Image.bmpToPng("e:\\test.bmp", "e:\\curve.png", true, "white"); делаю три (попробуем задержку): mdm.Image.ScreenCapture.movieToBmp("e:\\test.bmp"); var TM:Number = setInterval(this,"upd",5000); upd = function() { mdm.Image.bmpToPng("e:\\test.bmp", "e:\\curve.png", true, "white"); clearInterval(TM); } Странно как-то и нестабильно...
__________________
Мы не съедобны. |
|
|||||
listener
|
Видимо, mdm.Image.ScreenCapture.movieToBmp() аснихронно работает и
файл бмп просто не успевает выгрузиться на диск. Попробуйте в интервале проверять его существование (mdm.FileSystem.FileExists), а потом уже конвертить |
|
|||||
"Аинслей"
|
Проверку на существование файла проходит превосходно. Но результат то же. %(
Причем даже попытался по хитрому -- проверяет, что бмп файл есть. Затем попытка создать пнг и проверка на существование пнг. Если пнг нет, то пытаться снова. Результат аналогичен.. Смотрю в сторону ImageMagick конвертера..
__________________
Мы не съедобны. |
|
|||||
listener
|
А если тупо :
Последний раз редактировалось alexcon314; 18.11.2008 в 15:59. |
|
|||||
"Аинслей"
|
нет. И так тоже не работает.
Пошел искать сторонний конвертер. Есть какие на примете?
__________________
Мы не съедобны. |
|
|||||
"Аинслей"
|
Итак, промежуточный итог.
Т.к. этот метод не работает, использую следущую схему:
Делаю скрин в бмп. С помощью утилиты ImageMagick (элементы converrt.exe, mogrify.exe) конвертирую файл в png со следующими параметрами: convert.exe C:\mg.bmp -format PNG32 C:\img.png mogrify.exe -transparent white -fuzz 10% С:\img.png Обе команды вызываются через mdm.System.execStdOut Результат промежуточный, т.к. нужно было быстро реализовать идею. В дальнейшем планирую делать немного иначе и вообще отказаться от mdm.Image.ScreenCapture, а конвертировать данные в битмапдату, передавать ее опять же через exeStdOut, но уже своему приложению-конвертеру PNG, написаному на AS3 и уже из нее загонять в бинарный файл. Проблема только в том, что сам проект на AS2, и, похоже, придется повозиться с передачей этих бинарных данных. Как будут результаты -- напишу. Надеюсь, кому-то будет полезно.
__________________
Мы не съедобны. Последний раз редактировалось cyraxchel; 18.11.2008 в 16:00. Причина: неточность в коде |
|
|||||
listener
|
ну, вообще можно еще длл к цинку прикрутить, где юзается GDI API. Скринить, конвертить и сохранять можно. У меня был где-то тут пример для цинка 2.5.0.34.
... нашел линк http://flasher.ru/forum/showthread.php?t=112181 Последний раз редактировалось alexcon314; 18.11.2008 в 16:09. |
|
|||||
"Аинслей"
|
Согласен. Если она позволяет битмапдату AS2 в пнг загонять, то вообще красота будет. А иначе что либа, что внешний конвертер -- одинаково придется извращаться с передачей данных.
__________________
Мы не съедобны. |
Часовой пояс GMT +4, время: 15:30. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bmptopng , mdm , zinc |
|
|