![]() |
Редактирование изображений перед отправкой
Добрый день!
Да, эта тема один раз неявно всплывала на просторах сего замечательного ресурса, однако есть желание расставить точки над i =) Процесс следующий:
Вариант с "просто загрузкой" отлично решает FileReference, который в 10й версии плеера обзавелся еще и [read-only] полем data, который позволяет посмотреть визуально, что же пользователь загрузил во флешку, перед отправкой на сервер. Как-то вот так: Код AS3:
* Собственно, как я понимаю, поля типа filter никак не влияют непосредственно на изображение, а только изменяют представление DisplayObject'а? Тогда какой подход выбрать к изменению изображения? И к его передаче на сервер =) |
А что у image.source не идёт получить что в него загружено?
Например в Delphi можно украсть всё с Canvas. Конечно это рогатенько выглядит, но, как вариант. |
Это ByteArray, вообще-то.
|
Ну да, но проблема-то в том, как модифицировать изображения, подгруженные в клиент с помощью FileReference и измененную версию снова в него подсунуть, чтоб с помощью метода upload загрузить это хозяйство на сервер.
Тут я разделяю 2 концептуальных :) вопроса: 1. Как модифицировать изображение, имея его в массиве байтов. 2. Как модифицированное изображение "запихнуть" обратно в FileReference, чтобы отправить его. По п.1. - есть в объекте Image, поле transform.matrix, однако, это влияет только на отображение, а не на саму картинку (т.е. последовательность байт) По п.2. - если даже как-то изменить изображение, то непонятно, как его его загрузить в FileReference. Ведь, как уже говорилось, поле data - только на чтение. |
data — это ссылка на ByteArray, вот его и изменяйте, как вам угодно.
|
Цитата:
Не довелось ещё пощупать, что и как. Но суть та же. Получить байты и с ними работать. Цитата:
|
Код:
var fileRef:FileReference = new FileReference();Код:
<?phpВ эту папку будут сваливаться файлы Не рекомендую использовать этот php скрипт, тк. он полностью губит ваш сайт Ведь закачать можно любой файл, в том числе и php файл, нужно допилить php скрипт, что бы он принимал только файлы рисунков. |
Цитата:
Дык, круто :) Только 2 "но": это действительно ссылка, и в процессе дебага, действительно видно, что, скажем, применение метода clear, стирает этот массив. Но файл-то в итоге заливается! Изменения в нем - побоку. А задача именно - в изменении изображения перед отправкой. Как организовать просто отправку файла - это я знаю, спасибо =) На сервере стоит PHP, написан скрипт, принимающий файлы, посредством POST-запроса. Но это не важно. Важно узнать как изменить изображение и отправить уже измененный экземпляр. Alex Lexcuk, спасибо за код, но это уже давно реализовано, тема не о том :) Почему-то мне кажется, что задача уже реализована не один раз... к сожалению, нигде не найти информации :( |
Вам же сказали про ByteArray, вот и думайте что файла не существует. Есть только ByteArray.
как сохранить bytearray flex php - это подсказанька :о)) |
>>как сохранить bytearray flex php - это подсказанька :о))
Код:
//SaveByteArrayServerDoc |
Alex Lexcuk, зачем лишаете человека эстетического удовольствия от решения задачи?
P.S. Хотя задача все равно заключается в сохранении картинки, а не текста. :о) |
Alex Lexcuk, вы вопрос в начале темы читали?
|
Спасибо большое, видимо это то, что надо :)
Однако, есть один вопрос: Код AS3:
Код AS3:
Код:
Error #2044: Необработанный ioError:. text=Error #2032: Ошибка потока. URL: http://localhost:81/pic_test/process.php?name=DSC01627.JPG |
Апач включен?
Попробуйте из браузера вызвать свой адрес Код:
http://localhost:81/pic_test/process.php?name=DSC01627.JPGКод:
http://localhost/CONTENT_PATH/save-file.php?name=fileName+&d=12341234file write - OK fileName .txt И создается пустой файл с именем fileName .txt в директории виртуального сервера CONTENT_PATH. И еще небольшой прикол: записывать вот так DSC01627.JPG непосредственно, надо думать об модернизации php скрипта, что бы он принимал только JPG, а не допустим php файл. Запись постороннем лицом своего php файла это такая дыра, что ваш сайт может моментально стать порно сайтом. Целесообразно передавать имя файла без расширения, а расширение .jpg дописывать можно и php скриптом. |
Цитата:
Цитата:
Еще раз огромное спасибо! Добавлено через 43 часа 45 минут Теперь непосредственно о редактировании. Общая схема такая: 1. Создание объекта BitmapData из ByteArray. 2. Манипуляция (масштабирование, поворот). 3. Перевод из BitmapData в ByteArray. Вот как-раз по этому пункту и есть главный вопрос. Использую JPEGEncoder, метод encode. Все работает, но скорость оставляет желать много лучшего. Причем, недавно довелось мне увидеть и использовать новую версию загрузчика изображений в социальной сети "ВКонтакте". Там, сразу после загрузки изображения пользователя во флеш, происходит масштабирование - прямо на клиенте - и занимает оно ...... - не более 5 секунд! Причем, пробовал туда подсунуть изображение ~5000*3000, обработка которого посредством моего скрипта занимает на 2*ядерном процессоре примерно полминуты. А тут - 3 сек. Странно. Может это Алхимия? Вобщем, очень хотелось бы услышать ваши мнения, может есть готовые паттерны или компоненты для решения такой задачи. |
А с чего вы взяли, что обработка происходит на клиентской стороне?
|
| Часовой пояс GMT +4, время: 13:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.