|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
масштабирование изображения при помощи матрицы
Есть такой код, который делает снимок определенного размера (например 160х120) с камеры.
var scaleWidth:Number = _width / video.videoWidth; var scaleHeight:Number = _height / video.videoHeight; var matrix:Matrix = new Matrix(); matrix.scale(scaleWidth,scaleHeight); var result:BitmapData = new BitmapData(_width, _height); result.draw(video, matrix, null, null, null, true); Скорее всего я неправильно считаю коэффициенты, но прочитав про Matrix еще раз ошибки не нашел... Методом научного тыка подобрал рабочие коэф-ты 0.375 Помогите пожалуйста, что делаю не так? |
|
|||||
Вы уверены, что размер камеры четко передается через video.videoWidth;, может стоит использовать Camera.width ?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Сместить забыли, видимо, tx и ty тоже в 2 раза больше сделать.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Еще 1 нюанс, вы отрисовываете объект Video, и должны браться его размеры, а не размеры видео внутри него ибо оно тоже может быть scale'но.
var scaleWidth:Number = _width / video.width; var scaleHeight:Number = _height / video.height; var matrix:Matrix = new Matrix(); matrix.scale(scaleWidth,scaleHeight); var result:BitmapData = new BitmapData(_width, _height); result.draw(video, matrix, null, null, null, true); Вы меняете video.width и video.height, в зависимости от video.videoWidth, video.videoHeight ?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Если не смещать, то оно может масштабироваться относительно не той точки. Не замечаете, что при скейле 0.375 у вас сместился центр и что-то вылезло за экран?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
поставил смещение... изображение на скриншоте просто сдвинулось на заданное кол-во пикселей, сразмер же изображения остался таким же.
Опытным путем вывел формулу: var scaleWidth:Number =_width / video.videoWidth * video.videoWidth / 320; var scaleHeight:Number =_height / video.videoHeight * video.videoHeight / 240; проверил на различных разрешениях... все пашет, но спать я буду плохо... Последний раз редактировалось Aloran; 08.02.2012 в 19:13. |
|
|||||
Правильное решение :
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
Часовой пояс GMT +4, время: 01:16. |
|
« Предыдущая тема | Следующая тема » |
|
|