Przeczytaj ten artykuł by zobaczyć, jak regulować takie wartości jak jasność czy nasycenie zdjęcia. Dowiesz się też, jak włączyć lampę w aparacie telefonu by zawsze mieć dobre oświetlenie Zapraszam do czytania!
Zastosowanie MediaTrackConstraints w robieniu zdjęć
Podstawową rzeczą jaka będzie nam potrzebna jest stream video:
Settings posłużą nam do wyświetlenia obecnej wartości, a capabilities do sprawdzenia, czy mamy możliwość sterowania własnością której potrzebujemy. Lista własności którymi będziemy chcieć sterować:
W pętli najpierw będziemy sprawdzać, czy dana funkcjonalność jest obecna w obiekcie capabilities, co oznaczać będzie że można nią sterować:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
const capability = capabilities[constraint];
if(!capability){
return;
}
const capability = capabilities[constraint];
if (!capability) {
return;
}
const capability = capabilities[constraint];
if (!capability) {
return;
}
Kolejnym krokiem będzie zbudowanie UI potrzebnego do sterowania wartościami. Dzięki strukturze tego, co zwraca metoda getCapabilities możemy przyjąć 3 założenia:
Jeżeli wartość jest listą, oznacza że przyjmuje konkretne zdefiniowane wartości. Wtedy chcemy przełączać je za pomocą selecta.
Jeżeli wartość to boolean, oznacza to iż dana funkcjonalność może być tylko włączona bądź wyłączona. Wtedy do sterowania posłuży nam checkbox.
Jeżeli wartość jest obiektem, wtedy zawiera wartość minimalną, maksymalną oraz krok. Do sterowania użyjemy suwaka który powstanie po utworzeniu inputu typu range.
Dzięki takiemu podejściu wystarczy że do listy constraintsToSupport dodamy kolejny element którego będziemy potrzebować a odpowiedni UI zbuduje się sam.
UI do sterowania własnościami będzie różnił się w zależności od urządzeń na których uruchamiana jest aplikacja oraz samych kamer. Przykładowo, na urządzeniach mobilnych będzie zawierać checkbox torch, umożliwiający włączenie lampy. Bardziej zaawansowane kamery będą dodatkowo mieć możliwość sterowania zoomem.
Przykładowe UI, dla prostej kamery zewnętrznej wyglądać będzie następująco:
Ostatnim krokiem jest utworzenie obiektu ImageCapture, który pozwoli na wykonanie zdjęcia oraz dodanie kodu odpowiedzialnego za pobranie elementu:
Jeśli chcesz zobaczyć pełnię możliwości tego przykładu, uruchom go na urządzeniu mobilnym – tam będziesz mieć możliwość uruchomienia lampy błyskowej bądź zarządzania zoomem, co wygląda naprawdę efektownie
Dzięki ImageCapture robienie zdjęć na Web stało się prostsze i efektywniejsze – a dzięki zarządzaniu własnościami MediaTrackConstraints możemy je jeszcze dodatkowo ulepszyć, dając użytkownikowi możliwość zarządzania parametrami dostępnymi wydawałoby się tylko z poziomu natywnej aplikacji obsługującej aparat w urządzeniu.