Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Как сохранить Bitmap на сервере через JPGEncoder (http://www.flasher.ru/forum/showthread.php?t=124270)

mr.tsb 25.04.2009 12:26

Как сохранить Bitmap на сервере через JPGEncoder
 
Делаю скриншонт с камеры и хочу сохранить его на сервер в формате jpg.
Делаю так:

Код AS3:

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.
Пожалуйста, подскажите, что я делаю нетак?

VVall 25.04.2009 12:43

Вы не пытаетесь понять сообщения об ошибках или хотя-бы почитать документацию.

mr.tsb 25.04.2009 17:38

Прошу прощения за нарушение вашего эстетического вкуса, просто очень спешу :-(

Переиначу вопрос:

Как тип Bitmap изменить в тип BitmapData требуемый JPGEncoder'ом ?
И съест ли FileReference этот тип?

VVall 26.04.2009 04:51

Ответ переиначивать не требуется: читайте документацию, там всё написано. Как вы хотите сделать что-то, не изучив это? Почему вы считаете, что ваша спешка является оправданием, чтобы другие люди тратили своё время на пересказ вам элементарных вещей из документации?

Для начала http://livedocs.adobe.com/flex/3/lan...ay/Bitmap.html

mr.tsb 27.04.2009 21:09

Спасибо, хорошо, я чуть разобрался с тем, что наворотил.

Код AS3:

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 минут
Пытаюсь отправить через следующую конструкцию:
Код AS3:

 
        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 файл сваливаются только пару байт...

Zall 29.04.2009 12:42

variables.ddd = ba.toString(); - попробуй без этого.

Добавлено через 38 секунд
variables.ddd = ba или типо того

mr.tsb 29.04.2009 13:00

Всем спасибо!
нашел работающий способ здесь:
http://easyflash.org/256-soxranyaem-...sredstvom.html

Da_Demon 20.04.2010 14:21

У этого примера есть проблема - JPG он делает уже на сервере.
Думаю тема не раскрыта JPGEncoder нужен для того что-бы слать уже готовый маленький файл, а не здоровенную
Код AS1/AS2:

myBitmapData.getPixel(a,b).toString(16);

и так для каждого пикселя.
Демонстрацию отправки и сохранения результата JPGEncoder все еще найти не могу.


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

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