Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Web Cam To Jpg (http://www.flasher.ru/forum/showthread.php?t=209686)

wrun 08.12.2014 19:05

Web Cam To Jpg
 
Добрый день!
Пытаюсь сделать фотографии с Web камеры и отправлять в PHP.

Вроде всё работает, но запнулся на размере. Камера позволяет делать снимки аж 1024*720 (ну возьмем хотя бы 640*320). А Flash область самого окна 320*240 (что бы удобней был предпросмотр). И в результате такого снимка получается фото 640*480, только она почти вся черная, кроме верхнего левого квадрата, куда вставляется фото 320*240...

Подскажите как это обойти без увеличения рабочей поверхности?

Код AS3:

import com.adobe.images.JPGEncoder;
 
var vid:Video;
var cam:Camera = Camera.getCamera();
 
if (cam == null)
{
    trace("Unable to locate available cameras.");
}
else
{
    cam.setMode(1024,720,15,false);
    trace("Found camera: " + cam.name);
    cam.addEventListener(StatusEvent.STATUS, statusHandler);
    vid = new Video();
    vid.attachCamera(cam);
}
function statusHandler(event:StatusEvent):void
{
    if (cam.muted) {
        trace("Unable to connect to active camera.");
    } else {
        vid.width = 640;
        vid.height = 480;
        addChild(vid);
    }
    cam.removeEventListener(StatusEvent.STATUS, statusHandler);
}
Object(root).photo.addEventListener(MouseEvent.CLICK, photo_click);
function photo_click(event_object:MouseEvent) {
    trace("photo_click");
    var previewPortData:BitmapData = new BitmapData(640, 480, true, 0x00000000);
    var previewPort:Bitmap = new Bitmap(previewPortData);
    previewPortData.draw(vid);
    var myEncoder:JPGEncoder = new JPGEncoder(90);
    var byteArray:ByteArray = myEncoder.encode(previewPortData);
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "image/jpeg");
    var saveJPG:URLRequest = new URLRequest("w1.php");
    saveJPG.requestHeaders.push(header);
    saveJPG.method = URLRequestMethod.POST;
    saveJPG.data = byteArray;
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, sendComplete);
    urlLoader.load(saveJPG);
 
    function sendComplete(event:Event):void {
      trace("compete");
          Object(root).txt.text = "Отправлено";
    }
}


undefined 08.12.2014 20:06

ресайзить после фотографирования до целевых размеров

wrun 09.12.2014 09:35

Но ведь фото происходит 320*240, куда потом ресайзить? Лучше качество то не станет )

undefined 10.12.2014 20:30

тогда я не понимаю в чем проблема. Черный цвет не нравится? Так битмапдата-то с прозрачностью, а джипег,как известно,прозрачность не поддерживает.
как вариант можно размер захвата и конечное изображение сделать одного размера
Код AS3:

import com.adobe.images.JPGEncoder;
 
var vid:Video;
var cam:Camera = Camera.getCamera();
 
if (cam == null)
{
    trace("Unable to locate available cameras.");
}
else
{
    cam.setMode(stage.stageWidth,stage.stageHeight,15,false);
    trace("Found camera: " + cam.name);
    cam.addEventListener(StatusEvent.STATUS, statusHandler);
    vid = new Video();
    vid.attachCamera(cam);
}
function statusHandler(event:StatusEvent):void
{
    if (cam.muted) {
        trace("Unable to connect to active camera.");
    } else {
        vid.width = stage.stageWidth;
        vid.height = stage.stageHeight;
        addChild(vid);
    }
    cam.removeEventListener(StatusEvent.STATUS, statusHandler);
}
Object(root).photo.addEventListener(MouseEvent.CLICK, photo_click);
function photo_click(event_object:MouseEvent) {
    trace("photo_click");
    var previewPortData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
    var previewPort:Bitmap = new Bitmap(previewPortData);
    previewPortData.draw(vid);
    var myEncoder:JPGEncoder = new JPGEncoder(90);
    var byteArray:ByteArray = myEncoder.encode(previewPortData);
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "image/jpeg");
    var saveJPG:URLRequest = new URLRequest("w1.php");
    saveJPG.requestHeaders.push(header);
    saveJPG.method = URLRequestMethod.POST;
    saveJPG.data = byteArray;
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, sendComplete);
    urlLoader.load(saveJPG);
 
    function sendComplete(event:Event):void {
      trace("compete");
          Object(root).txt.text = "Отправлено";
    }
}

тогда не будет черного цвета


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

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