Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.12.2014, 19:05
wrun вне форума Посмотреть профиль Отправить личное сообщение для wrun Найти все сообщения от wrun
  № 1  
Ответить с цитированием
wrun

Регистрация: Dec 2014
Сообщений: 2
По умолчанию 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 = "Отправлено";
    }
}

Старый 08.12.2014, 20:06
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
ресайзить после фотографирования до целевых размеров

Старый 09.12.2014, 09:35
wrun вне форума Посмотреть профиль Отправить личное сообщение для wrun Найти все сообщения от wrun
  № 3  
Ответить с цитированием
wrun

Регистрация: Dec 2014
Сообщений: 2
Но ведь фото происходит 320*240, куда потом ресайзить? Лучше качество то не станет )

Старый 10.12.2014, 20:30
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
тогда я не понимаю в чем проблема. Черный цвет не нравится? Так битмапдата-то с прозрачностью, а джипег,как известно,прозрачность не поддерживает.
как вариант можно размер захвата и конечное изображение сделать одного размера
Код 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 = "Отправлено";
    }
}
тогда не будет черного цвета


Последний раз редактировалось undefined; 10.12.2014 в 20:49.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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