PDA

Просмотр полной версии : Мультизагрузчик изображений.


true11
15.10.2009, 02:59
Долго искал хотя бы какие-нить туторы, подсказки или уже готовые бесплатные решения и ничего не нашел толкового по этой теме. Посему более-менее освоив as 2.0 решил попробовать сделать это чудо сам. Конечно возникло несколько вопросов, т.к. тут нужно очень серьезно поработать с графикой. Все свои заметки и наблюдения буду выкладывать сюда, и надеюсь с вашей помощью произведу на свет второй свой урок по as2. Все исходники обязуюсь выкладывать ниже :)

Сразу озвучу несколько вопросов, для которых я либо не знаю ответа либо сомневаюсь.
а) Можно ли сделать аналог explorer-a?(дерево папок с возможностью просматривать фотографии на компьютере пользователя в виде миниатюр)
б) Можно ли "сжимать" фотографии на компьютере пользователя и потом результат жизнедеятельности скрипта слать на сервер? (чтото типа метода copyPixels) Либо мы просто работаем с мувиком, куда загружена фотография и передаем php скрипту параметры, к примеру, нужно повернуть изображение-оригинал на 180 градусов, ужать по меньшей стороне до 200 px и обрезать с большей стороны кусок фотки, который больше 200px.

Также озадачил способ отправки фотографий на сервер. Чем мультизагрузчик должен отличаться от обычного на php страничке? Обычна на хостингах стоит ограничение 5 мб на закачиваемый файл(которое можно увеличить впоследствии до 100 мб). Т.е для фотографа уже не совсем удобно закачивать по 1му файлу либо много но заранее сжимая и обрабатывая фотографии. Зачем? Затем, что фотосессия сама по себе весит далеко не гб, а то и больше. А все фотографии обрабатывать и ужимать ручками дополнительно для галереи довольно трудозатратно. Вообщем ответ на данный вопрос - посылать фотографии по одной шт на сервер, ждать ответа и затем загружать следующую. Порыскав тут же на форуме, нашел урок по аплоаду файлов на сайт по 1 шт с помощью FileReference. Великолепно, ведь к листнеру FileReference можно прикрутить событие onComplete. Значит, теоритически это возможно.

Мм вроде все. на этой ноте плетусь добивать исходник(если не выложу сеня, то завтра а то поздно уже.) Правда, думается мне я как обычно с первого раза что-нибудь да пропустил. Если я где-то пролетаю с теорией, подскажите пож-та. Хочется сделать чтонить оч полезное для общества, ну и качеством на уровне)

mooncar
15.10.2009, 03:23
Ты смотрел класс FileReferenceList ?

true11
15.10.2009, 03:32
Только что посмотрел, спасибо. Впринципе более-менее понятно. Но все-таки хотел свой интерфейс сделать. Два блока - один отображает папку пользователя(не метод browse) другой - папку на сервере.
Человек ручками перетаскивает один или несколько клипов, и жмет кнопку аплоада.

mooncar
15.10.2009, 03:36
Вопрос - как ты будешь реализовывать "папку пользователя" чисто средствами флеш? Флеш ведь не умеет работать с файловой системой, хоть NTFS, хоть какой. Как, например, флеш "родит" хотя бы простой список файлов директории, не говоря уже об их атрибутах?
Перебором всевозможных имен файлов в мегацикле, до какого-то знака в имени и с последующей попыткой их открыть?

На стороне сервера - это легко, с помощью соответствующих функций php, а тут как поступить?

true11
15.10.2009, 03:40
ну да, учитывая то, что даже работая standalone не может свободно в файлы, тут все безнадежно, как я впринципе и думал.

А что вы думаете по поводу картинок? можно ли сжать/обработать изображение на flash-клиенте и потом уже посылать обработанное? (Если честно, никогда серьезно не вникал в BitmapData, сейчас вот только начинаю))

mooncar
15.10.2009, 03:47
Сжать-то можно. (С помощью BitmapData как-то перерисовать в худшем качестве или уменьшить геометрический размер).
Опять таки что делать с этим дальше? Обычно в процессе выполнения задач программы создают некий временный файл, с которым работают - пишут туда обновленные данные, и юзер или приложение дальше как-то тем же временным или уже готовым файлом распоряжается. А у нас опять все упирается в то, что флеш не умеет работать с ФС, выводить данные файл, то есть сохранять его.
То есть перед отправкой на сервер в каком виде ты предполагаешь хранить данные? Ведь флеш может использовать для аплоада только FileReference, а этому классу нужно указывать файл в окне обзора.
Я не вижу возможностей обойтись чистым флешевским клиентом - нужна надстройка типа Zinc или еще что. Мне подобные еще не приходилось использовать.

true11
15.10.2009, 03:53
В этом то и вопрос. Создать объект BitmapData можно. Но как его послать - это уже проблема. Вообщем тогда пока остановлюсь на такой схеме:
1. Человек выбирает файлы стандартным browse- интерфейсом, они у него появляются в рабочем поле флешки, в таблице из двух столбцов. В первом разделе можно задавать обрезание по px(или %), поворачивать либо удалять из списка оригиналы, второй столбец будет идентичен первому, за исключением что там будут выставляться настройки для превью-изображений.

2. После того, как человек все выбрал/настроил, мы посылаем поочереди файлы на сервер, где они поочередно загружаются и обрабатываются в зависимости от полученных параметров от флешки.

mooncar
15.10.2009, 03:56
Не стоит, ИМХО, стремиться сделать все на флеше. Есть под конкретные задачи заточенные орудия. Флеш более всего - инструмент визуализации данных - это может быть мультик, или калькулятор-конструктор дома с возможностью раскрашивания интерьеров, или каталог товаров, или презентация.
А загрузку файлов все-таки лучше писать с использованием других технологий.

Добавлено через 2 минуты
загружаются и обрабатываются в зависимости от полученных параметров от флешки.
То есть загружаются "as is", во все свои мегабайты, а там уже переделываются?

Еще вопрос - искал материалы только по русскоязычным ресурсам?

true11
15.10.2009, 04:09
По большей части искал среди русскоязычных.
Ну если мы не можем обработать файл с помощью flash, то придется загружить их "as is". Хотя, конечно, это довольно ужасно :(

В любом случае видимо тут придется применять какое-то стороннее решение для пре-обработки файлов перед загрузкой их на сервер.

Flamingo08
09.02.2010, 17:13
Так к чему пришли? Получилось?