A világ első webkameráját nagyon gyakorlatias célból telepítették a Cambridge-i egyetemen. Sokszor megesett, hogy mire az ember az egyik távoli folyosó végén lévő kávéfőzőhöz megérkezett, kiderült, hogy elfogyott a kávé. A felesleges kávékirándulások helyett egyszerűen csak rá kellett nézni a kamera képére. (Ez akkor 128x128 pixeles fekete-fehér kép volt.)
Ekkor - 1991-ben - ez a kamera még nem volt rákötve az Internetre, hiszen 1993-ban készült az első webböngésző, ami képes volt képet is megjeleníteni. 1993 novemberétől ez a kávékamera lett az első Internetes kamera.
Ma már az Interneten rengeteg webkamera képe látható. Az újabb kamerák folyamatosan mozgó videóképet rögzítenek, menet közben tömörítik, és folyamatos videót szolgáltatnak. Sajnos ezeknek a képét csak a hozzájuk tartozó pluginokkal lehet megnézni.
Azonban a régebbi kamerák pont olyan egyszerűek, mint a kávégép-kamera volt. Ezek egyszerűen időnként (10-30 másodpercenként) készítenek egy fényképet, és ezt a fényképet lehet elérni egy URL-en keresztül. Ez pont olyan, mint a lorempixeles példa, ahol az URL egyforma volt, de mégis a kép tartalma változott.
Összegyűjtöttem pár ilyen URL-t:
Terepasztal:
Karancs kilátó:
További példák:
Oké... de hogyan??? Semmi gond! Először is, ott tartottunk, hogy volt egy Main osztályunk, ami elindított mindent egy FirstWindow példány létrehozásával:
public class Main {
public static void main(String[] args) {
new FirstWindow();
}
}
Az előző oldalon pedig ez volt a FirstWindow, ami időnként egy-egy új képet hoz be a lorempixem.com-ról:
public class FirstWindow extends Form {
public FirstWindow() {
window()
.text("Hello")
.add(
view("http://lorempixel.com/400/400").asPicture().refresh(2000)
)
.show();
}
}
No most, cseréld ki az URL-t valamelyik kamera URL-jére. A refresh-t állítsd be úgy 500-ra, ez másodpercenként két kép. Máris itt vannak a terepasztal:
public class FirstWindow extends Form {
public FirstWindow() {
window()
.text("Kamera")
.add(
view("http://extcam-16.se.axis.com/axis-cgi/jpg/image.cgi?resolution=320x240").asPicture().refresh(500)
)
.show();
}
}
Lehetne esetleg több kamera képét is kitenni? Miért is ne? Tulajdonképp csak további view-kat kell beírni.
public class FirstWindow extends Form {
public FirstWindow() {
window()
.text("Kamera")
.add(
view("http://kamera.kozut.hu/mcs036/kep1.php").asPicture().refresh(1000),
view("http://kamera.kozut.hu/mcs036/kep2.php").asPicture().refresh(1000)
)
.show();
}
}
Mivel a két view közt nincs br, ezért ezek egymás mellé kerülnek.
Még kettő jöhet?
public class FirstWindow extends Form {
public FirstWindow() {
window()
.text("Kamera")
.add(
// felső két kamera
view("http://kamera.kozut.hu/mcs036/kep1.php").asPicture()
.refresh(1000),
view("http://kamera.kozut.hu/mcs036/kep2.php").asPicture()
.refresh(1000),br(),
// alsó két kamera
view("http://kamera.kozut.hu/mcs030/kep1.php").asPicture()
.refresh(1000),
view("http://kamera.kozut.hu/mcs030/kep2.php").asPicture()
.refresh(1000)
)
.show();
}
}
Sajnos, a képek méretét most még nem tudjuk megváltoztatni. A kamera mondja meg, hogy mekkora képet csinál, és a GUI automatikusan igazodik hozzá. Vannak kisebb és nagyobb képeket használó kamerák is, így ha ezeket egymás mellé akarjuk tenni, egy picit variálni kell.
De semmi gond, Mici Mackó névjegykártyáján megtanultunk három dolgot:
Tehát, ha mondjuk bal szélen szeretnénk három kis képet, és mellette jobb oldalon egy nagy képet, akkor a három kis képet simán begroupoljuk. Ez a group lesz a sorban az első vezérlő, majd mellé tesszük a nagy képet, és az lesz a második mellette:
public class FirstWindow extends Form {
public FirstWindow() {
window()
.text("Kamera")
.add(
group(
view("http://kamera.kozut.hu/mcs036/kep1.php")
.asPicture().refresh(1000),br(),
view("http://kamera.kozut.hu/mcs036/kep2.php")
.asPicture().refresh(1000),br(),
view("http://kamera.kozut.hu/mcs030/kep1.php")
.asPicture().refresh(1000),br(),
view("http://kamera.kozut.hu/mcs030/kep2.php")
.asPicture().refresh(1000)
),
view("http://live.onlinecamera.net/206skanska.jpg")
.asPicture().refresh(1000)
)
.show();
}
}