Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Снимок с камеры, проблема с размером (http://www.flasher.ru/forum/showthread.php?t=133417)

enepx 04.12.2009 13:34

Снимок с камеры, проблема с размером
 
Привет, ребята.
Я делаю снимок с камеры, делаю из него JPG в byteArray и POST'ом шлю на сервер. Камере ставлю 600 х 300 (или любой другой), битмапу делаю 600 х 300, видео у меня тоже 600 х 300, но JPG приходит сам 600 х 300, а вот содержимое его 320 х 240, примерно так:
http://www.jetScreenshot.com/demo/20091204-rdh-20kb.jpg
Как мне "отрисовать камеру" размером 600 х 300?

Вот кусочки кода:
Код AS3:

                _video = new Video();
                _video.width = 600;
                _video.height = 300;
                addChild(_video);
 
                _cam = Camera.getCamera();
                _cam.setQuality(0, 100);
                _cam.setMode(600, 300, 24, true);
                _video.attachCamera(_cam);

Код AS3:

        private function onSnapClicked(event:MouseEvent):void {
                var encoder:JPEGEncoder = new JPEGEncoder(90);
 
                var bmd:BitmapData = new BitmapData(_video.width, _video.height, false, 0xff0000);
                bmd.draw(_video);
 
                _ba = encoder.encode(bmd);
                _video.attachCamera(null);
        }

Код AS3:

        private function onSendClicked(event:MouseEvent):void {
                var urlRequest:URLRequest = new URLRequest();
                urlRequest.url = FlashVars.getStringByName("php");
                urlRequest.contentType = "application/octet-stream";
                urlRequest.method = URLRequestMethod.POST;
                urlRequest.data = _ba;
 
                var urlLoader:URLLoader = new URLLoader();
                urlLoader.addEventListener(Event.COMPLETE, onSent);
                urlLoader.load(urlRequest);
        }

Спасибо.

Jewelz 04.12.2009 13:58

Код AS3:

setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void

Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям.

width и height только для чтения

UPD:
извиняюсь, у вас так и сделано

а может быть из-за того что сама камера не снимает с бОльшим разрешением?

enepx 04.12.2009 14:03

Камера у меня 1.3Mpx

я ставлю, например, 800 х 600, у меня получается битмапдата 800 х 600, но слева вверху у меня все равно 320 х 240 сником камеры. Может мне надо тут
Код AS3:

                var bmd:BitmapData = new BitmapData(W, H, false, 0xff0000);
                bmd.draw(_video);

использовать матрицу трансформации?

Добавлено через 6 минут
Используя матрицу, я могу получить любой размер, через метода scale, но тогда мне нужно знать исходный размер, у меня он 320 x 240. Или он у всех одинаковый?

Jewelz 04.12.2009 14:13

Цитата:

Сообщение от enepx (Сообщение 870244)
я ставлю, например, 800 х 600, у меня получается битмапдата 800 х 600, но слева вверху у меня все равно 320 х 240 сником камеры. Может мне надо тут
Код AS3:

                var bmd:BitmapData = new BitmapData(W, H, false, 0xff0000);
                bmd.draw(_video);

использовать матрицу трансформации?

нет, Bitmap у вас получается с верными размерами, просто отрисовывает туда видео с размером 320x240 поэтому и красные поля которые вы задали в fillColor

можно тогда в методе draw указать матрицу трансформации с параметрами scale например 2

Код AS3:

var m:Matrix = new Matrix();
var size:Number = 2;
m.scale(size, size);
 
var bmd:BitmapData = new BitmapData(W, H, false, 0xff0000);
bmpd.draw(_video, m, null, null, null, true);


enepx 04.12.2009 14:17

Jewelz,
я это и имел в виду. Но мне коэффициент 2 надо же тоже узнать. Он зависит от размера камеры, который у меня 320 х 240. Если у всех 320 х 240, то проблема решена, если нет, как узнать?

Jewelz 04.12.2009 14:18

а если размер поставить меньше чем 320x240, уменьшается изображение?

enepx 04.12.2009 14:23

Вроде разобрался, setMode у меня не может поставить больше 640 х 480, т.к. у меня камера 1.3Мпх. А текущую ширину и высоту я беру из Camera.width, Camera.height (они бывают не равны ширине и высоте из setMode). отсюда я и вычислю коэффициент масштабирования.
Спасибо.


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

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