Война с камерой часть 2

В первой части марлизонского балета я рассказывал о войне с камерой и iOS, но оказалось, что этот глюк плавает на некоторых андройдах, видимо самсунг не только интерфейс но и дрова покоцал у андройда.
Короче, замечены глюки у
Samsung A3
Acer Icona Tab A200
И глюки связаны с ориентацией камеры, мы её не получаем, всегда 0 градусов. Окей исправляем чуть код из прошлой версии:
Первый пункт: добавляем ориентацию к VideoOutput, он должен выглядеть так:
Код QML:
  1. id: cameraout;
  2. source: camera
  3. orientation: 270
Почему 270? ну потому что с ним только и заработало всё нормально. Дальше переходим к камере исправляем imageCapture:
Код QML:
  1. imageCapture {
  2. onImageSaved: {
  3. if(camera.orientation !== cameraout.orientation)
  4. {
  5. var ang = 90;
  6. }
  7. else
  8. {
  9. var ang = 0
  10. }
  11. adapter.rotateImage(ang,path);
  12. }
  13. }
Ну и изменяем саму функцию rotateImage в адаптере:
Код CPP-QT:
  1. void Adapter::rotateImage(int ang, QString url)
  2. {
  3. if(ang > 0)
  4. {
  5. QPixmap* pixmap = new QPixmap(url);
  6. QTransform transform;
  7. QTransform trans = transform.rotate(ang);
  8. QPixmap *transPixmap = new QPixmap(pixmap->transformed(trans));
  9. transPixmap->save(url, "jpg", 100);
  10. }
  11. emit imageRotate("file://"+url);
  12. }
Что делается: Если камера не выдаёт нам ориентацию свою, то Qt плющит и он не поворачивает правильно картинку, поэтому мы берём это на себя. Думаю, что будет и третья серия...но на моих сподручных аппаратах это работает.
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay