Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сохранение серии PNG-картинок без диалогового окна. (http://www.flasher.ru/forum/showthread.php?t=197632)

bbexp 10.04.2013 14:49

Сохранение серии PNG-картинок без диалогового окна.
 
День добрый.
Для личных анимационных нужд разработал микро-утилиту (Flash IDE), которая
ровный векторный край рисунка переводит в неровный "карандашный".

Теперь задача стоит сохранить ПНГ-секвенцию.

Я могу сохранить картинку, используя PNGEncoder, ByteArray и FileReference.
Но после каждой картинки естественно вываливается диалоговое окно, запрашивающее имя файла и так далее.
Хотелось бы поставить процесс на автоматический поток - взяли кадр анимации, перевели вектор в битмап с неровными краями, сохранили пнгшку, инкрементировали счетчик для имени файла - сохранили далее.
Понятно, что работать это в реальном фпс это не должно, меня устраивает покадровый рендер.

НО поскольку я больше аниматор, чем программист - не знаю, куда копать, чтобы реализовать такое покадровое сохранение.
Это вообще можно сделать во Flash IDE?

caseyryan 10.04.2013 14:54

Можно, с помощью AIR. Проект запускаемый во флеш плеере этого сделать не сможет из соображений безопасности.

Alex Lexcuk 10.04.2013 16:54

Если не хочется разбираться с Air, для сохранения картинок можно использовать питон сервер
http://www.flasher.ru/forum/blog.php?b=309

bbexp 11.04.2013 08:20

Вариант с сервером для меня как полёт на Марс. Во-первых не уверен, что на мак смогу это чудо поставить,
Во-вторых не разбираюсь.
С air знаком, но вот в каких классах порыться – пока не осознал.
___
UPD: С утра как раз-таки все и осознал )
По крайней мере секвенцию сохраняет, результат удовлетворяет
Осталось докопаться до мелочей, вроде того, чтобы сохраняло в нужную папку, а не на рабочий стол и будет чудная полезная утилита )

Решение вкратце получилось таким:
Код AS3:

var file2Save:File = File.desktopDirectory.resolvePath("img_"+prefix(frn)+frn+".png"); //frn -  номер просчитываемого кадра, prefix — функция, добавляющая нули в имя файла
var fileStream:FileStream = new FileStream();
fileStream.open(file2Save,FileMode.WRITE);
fileStream.writeBytes(pngImage);
fileStream.close();

Отмечу правда такой момент - PNGEncoder не входит в стандартный набор классов для FlashIDE, потому пришлось вписывать его функции прямо в проект.

MikroAcse 11.04.2013 09:28

Импорт же?

zuxul 11.04.2013 10:41

Flash Player 11.3, AIR 3.3
BitmapData#encode

bbexp 11.04.2013 11:46

MikroAcse, что импорт?
zuxul - аналогичный вопрос - что encode?

Давайте будем стараться быть понятными, если что-то говорим, хорошо?
Пока не ясен ни одни из двух последних комментариев.
Перехожу по ссылке, в надежде увидеть некую документацию по методу encode() - но в документации нет такого метода, так что непонятно о чем речь ))

caseyryan 11.04.2013 15:05

Цитата:

Отмечу правда такой момент - PNGEncoder не входит в стандартный набор классов для FlashIDE, потому пришлось вписывать его функции прямо в проект.
Смотря что считать стандартный набором классов. Во Flash IDE да, но вот если создать проект AIR под флекс, то там он будет.
Вообще, можно и сторонний добавить как библиотеку. Не вижу проблем с этим.

Wolsh 11.04.2013 15:15

Цитата:

Перехожу по ссылке, в надежде увидеть некую документацию по методу encode() - но в документации нет такого метода, так что непонятно о чем речь ))
Вам же написали: Flash Player 11.3, AIR 3.3
Адобовский хэлп разбит по версиям. Настройки хелпа вверху страницы. Если у Вас в настройках версия ниже 11.3 — Вы не увидите справку по методу encode(). В двух словах: с версии 11.3 кодирование битмапдаты в PNG и JPEG включено в класс BitmapData.
Цитата:

MikroAcse, что импорт?
Зачем копипастить методы из класса, когда надо импортнуть класс в проект и использовать? Что с того, что он не родной класс Flash? Любой проект содержит неродные классы))

Alex Lexcuk 11.04.2013 20:00

Цитата:

Вариант с сервером для меня как полёт на Марс. Во-первых не уверен, что на мак смогу это чудо поставить,
Во-вторых не разбираюсь.
Я не знаю, работает ли python на маке? А это чудо не устанавливается, оно запускается двойным кликом. Видео сделал http://youtu.be/IXCzKYmVuLo


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

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