GTK és jpeg internetről megjelenitése

Fórumok

Lenne egy program ,amiben kérném az elinduláshoz egy kis segítségetek.

A program internetről tőltene le jpeg képet, megadott időközönként, pl. 100ms-ként. Nem nagyon tudom hogy honnan is kezdjek hozzá. Valaki valami segítséggel egy pár infóval megdobhatna. Ha megoldható GTK-ban menne a dolog.

Válaszokat előre is köszi!

Hozzászólások

Azért ennyire ne tolongjatok. :)
Nem a program megirására gondoltam, hanem valami infó hogy mégis milyen függvények tájékán érdemes turkálni hogy célhoz érjek.

Igen valami webkamerás dolog. Jó a megérzés, csak mondjuk a webkamerától egy kicsit komolyabb dologra kell.
Azt már el tudtam érni hogy megjelenjen egy valami.jpg ami a gépemen van.
Csakhogy nekem az kellene hogy a http://user:pass@192.168.1.111/valami.jpg legyen megjelenítve.

Háth az úgy elég lassú ugye, hogy mindig leírod vinyóra, aztán onnan megjeleníted, főleg az ilyen gyors frissítés mellett.. Próbáld felolvasni vmi bufferbe, aztán van ilyesmi a linken amit adtam: gtk_image_set_from_pixbuf(GtkImage *image,GdkPixbuf *pixbuf); Vagy valami hasonlót keress

Én is gondoltam egy "temp" fájlra, de ez sok kamerával menne, és állandóan kerregtetné a vinyót igy.
A másik ami igy most eszembe jutott, hogy valahogy letöltöm a jpeg-et és ezt memóriában tárolom, majd innen használom. Valahogy meg utánnanézek hogy is tudnám megszerezni azt a bizonyos fájlt a hálózaton keresztül, HTTP GET, stb...

Ha Gtk-ban csinálod, akkor miután létrejött a kapcsolat, érdemes GIOChannel-t csinálni a socketből, es a kép betöltéséhez használhatsz GdkPixbufLoader-t.

Vagy használhatod a libghttp-t is, és akkor nem kell socket kezeléssel bajlódni elvileg, bár én ezt még nem próbáltam:
http://www.fifi.org/doc/libghttp1/ghttp.html

Http protokollt az elejétől nem érdemes megírni kézzel. Pl van ez a Javás cucc (Hálózat lesz a szűk keresztmetszet, nem a gép szerintem):

http://jakarta.apache.org/httpcomponents/httpclient-3.x/

Az alap get hívás egyszerű, arra van az oldalon tutorial. A beléptetés nekem már nem ment könnyen, meg az alapértelmezett USER_AGENT-tel nem engedte be a weboldal, ezért én kb ezzel a kódrészlettel léptetem be a felhasználómat.

hc=new HttpClient();
HttpClientParams hcp=hc.getParams();
hcp.setParameter(HttpMethodParams.USER_AGENT, "Mozilla");
hcp.setParameter(HttpClientParams.HTTP_CONTENT_CHARSET, "UTF-8");
hc.setParams(hcp);
{
PostMethod method=new PostMethod(belepooldal urlje);
method.addParameter("username",user);
method.addParameter("password",pass);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
hc.executeMethod(method);
}

Amúgy ha admin jogod van a futtató gépen, akkor én lehet, hogy inkább csinálnék egy memória fájlrendszert és abba dolgoznék. Így standard eszközöket tudsz használni, mégse kerreg a vinyód.
Ha a HttpClient osztállyal Javában csinálod, akkor a sessiont fenntarthatod sokáig, így nem kell folyton úrja belépni, amit pl a wget megtenne.

Végülis odáig eljutottam hogy átmegyek az authentikáción, HTTP-vel letöltöm a jpeg fájlomat. Egy string-ként át tudnám adni akárminek. Pl. most valóban egy fájlt készit a programom.

A JPG megjelenítése is meg, csak annyi a gond vele hogy csak fájlból akarja felszivni.
Milyen megoldással lehet a fájlnyitogatás helyett adni neki egy memóriacímet hogy onnan olvassa a tartalmat ne pedig a fájlból?

Másik problémám hogy már talán az összes létező függvényt kipróbáltam, de nem tudtam frissíteni az egyszer már betöltött képet.

Valahogy igy töltődik be...:
image1 = gtk_image_new_from_file ("/ramdisk/proba0.jpg");
gtk_widget_set_name (image1, "image1");
gtk_widget_show (image1);

Mivel lehet frissítésre birni???

UI.: mostmár jó álmos is vagyok, és lehet hogy holnap napközben nem lesz áram a környékemen, mert valami trafót cserélgetnek. Szóval a tippeket várom, amint tudom meg is nézem, hogy megy e.