проблема веб-камеры Adobe Air - PullRequest
       9

проблема веб-камеры Adobe Air

0 голосов
/ 23 сентября 2011

Я разрабатывал простое настольное приложение, используя Adobe Air, HTML и Javascript для сохранения данных в SQLite (не как, ни Flash Builder, ни Flex)Есть ли способ, которым я могу захватить изображение с моей веб-камеры и сохранить его с помощью этих технологий?Если нет, что еще можно сделать для достижения результата?Заранее спасибо.

1 Ответ

0 голосов
/ 23 сентября 2011

Это можно сделать, но это абсолютно не способствует производительности :) Вы получите огромные строковые объекты (большие изображения = большие строки). Но я расскажу вам, как я это сделал однажды.

Во-первых, вы должны получить BitmapData с вашей веб-камеры. Это можно сделать, создав BitmapData-объект и используя его функцию draw (), как показано ниже:

var bmpd:BitmapData = new BitmapData(webcam.width, webcam.height);
bmpd.draw(webcam);

С помощью этого BitmapData вы можете затем вызвать getPixels (), который будет возвращать ByteArray.

var ba:ByteArray = bmpd.getPixels();

Этот ByteArray теперь готов к сериализации. Поскольку вы храните, лучше всего хранить его в виде строки. Это чаще всего делается с помощью Base64. Вы можете использовать этот класс для реализации base64-кодирования, как показано ниже:

var baseString:String = Base64.encodeByteArray(ba);

Приведенная выше строка может храниться в вашем sqlite и является строковым представлением вашего изображения. Чем больше изображение, тем больше времени займет преобразование.

Чтобы получить изображение обратно из вашего sqlite, вы можете использовать decodeByteArray () - метод класса Base64, который я вам дал, в сочетании с объектом-загрузчиком. Пример показан ниже.

var baseString = StringFromYourSQLite;
var ba:ByteArray = Base64.decodeToByteArray(baseString);

var imageLoader:Loader = new Loader();
imageLoader.loadBytes(ba);
stage.addChild(imageLoader);

И вот как вы можете хранить и извлекать изображения из вашей базы данных.

...