|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2009
Сообщений: 11
|
Редактирование изображений перед отправкой
Добрый день!
Да, эта тема один раз неявно всплывала на просторах сего замечательного ресурса, однако есть желание расставить точки над i =) Процесс следующий:
Вариант с "просто загрузкой" отлично решает FileReference, который в 10й версии плеера обзавелся еще и [read-only] полем data, который позволяет посмотреть визуально, что же пользователь загрузил во флешку, перед отправкой на сервер. Как-то вот так: * Однако, вся проблема в том, что поле-то это read-only Т.е., если сделать какую-то манипуляцию с картинкой, скажем, повернуть ее - то эти изменения никак не отразить в передаваемом файле. * Собственно, как я понимаю, поля типа filter никак не влияют непосредственно на изображение, а только изменяют представление DisplayObject'а? Тогда какой подход выбрать к изменению изображения? И к его передаче на сервер =) |
|
|||||
[+1 04.05.08]
Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
|
А что у image.source не идёт получить что в него загружено?
Например в Delphi можно украсть всё с Canvas. Конечно это рогатенько выглядит, но, как вариант. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Это ByteArray, вообще-то.
|
|
|||||
Регистрация: Feb 2009
Сообщений: 11
|
Ну да, но проблема-то в том, как модифицировать изображения, подгруженные в клиент с помощью FileReference и измененную версию снова в него подсунуть, чтоб с помощью метода upload загрузить это хозяйство на сервер.
Тут я разделяю 2 концептуальных вопроса: 1. Как модифицировать изображение, имея его в массиве байтов. 2. Как модифицированное изображение "запихнуть" обратно в FileReference, чтобы отправить его. По п.1. - есть в объекте Image, поле transform.matrix, однако, это влияет только на отображение, а не на саму картинку (т.е. последовательность байт) По п.2. - если даже как-то изменить изображение, то непонятно, как его его загрузить в FileReference. Ведь, как уже говорилось, поле data - только на чтение. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
data — это ссылка на ByteArray, вот его и изменяйте, как вам угодно.
|
|
|||||
[+1 04.05.08]
Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
|
Цитата:
Не довелось ещё пощупать, что и как. Но суть та же. Получить байты и с ними работать. Цитата:
|
|
|||||
var fileRef:FileReference = new FileReference(); var date:Date = new Date(); fileRef.addEventListener(Event.SELECT, selectHandler); fileRef.addEventListener(Event.COMPLETE, completeHandler); try { var success:Boolean = fileRef.browse(); } catch (error:Error) { trace("Unable to browse for files."); } function selectHandler(event:Event):void { var request:URLRequest = new URLRequest("http://www.сайт.мой.ру/upload.php?="+date.getTime().toString()); try { fileRef.upload(request); } catch (error:Error) { trace("Unable to upload file."); } } function completeHandler(event:Event):void { trace("uploaded"); txt.text = "uploaded"; } <?php $MAXIMUM_FILESIZE = 1024 * 200; // 200KB $MAXIMUM_FILE_COUNT = 10; // keep maximum 10 files on server //echo exif_imagetype($_FILES['Filedata']); if ($_FILES['Filedata']['size'] <= $MAXIMUM_FILESIZE) { move_uploaded_file($_FILES['Filedata']['tmp_name'], "./images/".$_FILES['Filedata']['name']); } ?> В эту папку будут сваливаться файлы Не рекомендую использовать этот php скрипт, тк. он полностью губит ваш сайт Ведь закачать можно любой файл, в том числе и php файл, нужно допилить php скрипт, что бы он принимал только файлы рисунков. |
|
|||||
Регистрация: Feb 2009
Сообщений: 11
|
Цитата:
Дык, круто Только 2 "но": это действительно ссылка, и в процессе дебага, действительно видно, что, скажем, применение метода clear, стирает этот массив. Но файл-то в итоге заливается! Изменения в нем - побоку. А задача именно - в изменении изображения перед отправкой. Как организовать просто отправку файла - это я знаю, спасибо =) На сервере стоит PHP, написан скрипт, принимающий файлы, посредством POST-запроса. Но это не важно. Важно узнать как изменить изображение и отправить уже измененный экземпляр. Alex Lexcuk, спасибо за код, но это уже давно реализовано, тема не о том Почему-то мне кажется, что задача уже реализована не один раз... к сожалению, нигде не найти информации |
|
|||||
>>как сохранить bytearray flex php - это подсказанька :о))
//SaveByteArrayServerDoc package { import flash.display.*; import flash.text.*; import flash.net.*; import flash.events.*; import flash.utils.*; public class SaveByteArrayServerDoc extends Sprite { private var ba:ByteArray, fileName:String, request:URLRequest, loader: URLLoader; public function SaveByteArrayServerDoc():void { ba = new ByteArray(); fileName = "text-file.txt"; request = new URLRequest( "http://localhost/CONTENT_PATH/save-file.php?name="+fileName+"&d="+new Date().getTime()); ba.writeUTFBytes("йцукенгшщзхъфывапролджэ\ячсмитьбю.qwertyuiplkjhgfdsazxcvbnm,"); request.data = ba; request.method = URLRequestMethod.POST; request.contentType = 'application/octet-stream'; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE,completeHandler); loader.load(request); } private function completeHandler(event:Event):void { trace(loader.data); } } } /* <?php //save-file.php $fileData = $GLOBALS[HTTP_RAW_POST_DATA]; $fileName = ''.$_GET['name'].'.txt'; $fp = fopen($fileName, "w"); fwrite($fp,$fileData); fclose($fp); echo "file write - OK ".$fileName; ?> */ |
Часовой пояс GMT +4, время: 23:55. |
|
« Предыдущая тема | Следующая тема » |
Теги |
image , resize , rotate , upload |
|
|