Просмотр полной версии : Как сохранить Bitmap на сервере через JPGEncoder
Делаю скриншонт с камеры и хочу сохранить его на сервер в формате jpg.
Делаю так:
Urequest = new URLRequest("http://www.mysite.ru/upload.php");
var imgcontainer:BitmapData = new BitmapData(320,240);
var image:Bitmap = new Bitmap(imgcontainer);
var scaleMatrix:Matrix = new Matrix()
scaleMatrix.scale(2,2)
imgcontainer.draw(MyCamScreenshot,scaleMatrix);
var jpg:JPGEncoder = new JPGEncoder(100);
var ba:ByteArray = jpg.encode(image);
var file:FileReference = FileReference(ba);
file.upload(uploadURL);
компилятор ругается:
1067: Implicit coercion of a value of type flash.display:Bitmap to an unrelated type flash.display:BitmapData.
или, если я передаю image в FileReference:
Type Coercion failed: cannot convert flash.display::Bitmap@1eebc9d1 to flash.net.FileReference.
Пожалуйста, подскажите, что я делаю нетак?
Вы не пытаетесь понять сообщения об ошибках или хотя-бы почитать документацию.
Прошу прощения за нарушение вашего эстетического вкуса, просто очень спешу :-(
Переиначу вопрос:
Как тип Bitmap изменить в тип BitmapData требуемый JPGEncoder'ом ?
И съест ли FileReference этот тип?
Ответ переиначивать не требуется: читайте документацию, там всё написано. Как вы хотите сделать что-то, не изучив это? Почему вы считаете, что ваша спешка является оправданием, чтобы другие люди тратили своё время на пересказ вам элементарных вещей из документации?
Для начала http://livedocs.adobe.com/flex/3/langref/flash/display/Bitmap.html
Спасибо, хорошо, я чуть разобрался с тем, что наворотил.
MyCamScreenshot.attachCamera(cam); // компонент video
...
var url = "http://www.mysite.ru/upload.php";
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale(2,2);
/////////
var myBitmapData:BitmapData = new BitmapData(320,240);
myBitmapData.draw(MyCamScreenshot,scaleMatrix);
var bmp:Bitmap = new Bitmap(myBitmapData);
addChild(bmp);
/////////
var jpg:JPGEncoder = new JPGEncoder(100);
var ba:ByteArray = jpg.encode(myBitmapData);
как теперь "ba" залить на сервер?
P.S. у меня FP9...
Добавлено через 27 минут
Пытаюсь отправить через следующую конструкцию:
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.ddd = ba.toString();
request.data = variables;
request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, qwer);
loader.load(request);
Всё в порядке, запрос приходит на сервер, но в jpg файл сваливаются только пару байт...
variables.ddd = ba.toString(); - попробуй без этого.
Добавлено через 38 секунд
variables.ddd = ba или типо того
Всем спасибо!
нашел работающий способ здесь:
http://easyflash.org/256-soxranyaem-kartinku-iz-flash-posredstvom.html
Da_Demon
20.04.2010, 14:21
У этого примера есть проблема - JPG он делает уже на сервере.
Думаю тема не раскрыта JPGEncoder нужен для того что-бы слать уже готовый маленький файл, а не здоровенную myBitmapData.getPixel(a,b).toString(16); и так для каждого пикселя.
Демонстрацию отправки и сохранения результата JPGEncoder все еще найти не могу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.