<div dir="ltr">I think yoou should get the photo data from the gstreamer side, <div>not from the widget where you are displaying it.</div><div>If you look at the Record activity code, </div><div>the logic used to take the photo is in glive.py take_photo method,</div>
<div>and adding a sink to a tee in the gstreamer pipeline,</div><div>and getting the data from there (_photo_handoff method)</div><div><br></div><div>Gonzalo</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Mon, Jul 21, 2014 at 2:50 AM, James Cameron <span dir="ltr"><<a href="mailto:quozl@laptop.org" target="_blank">quozl@laptop.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Mon, Jul 21, 2014 at 11:14:16AM +0530, Puneet Kaur wrote:<br>
><br>
><br>
><br>
> On Mon, Jul 21, 2014 at 10:56 AM, James Cameron <<a href="mailto:quozl@laptop.org">quozl@laptop.org</a>> wrote:<br>
><br>
> On Mon, Jul 21, 2014 at 02:07:15AM +0530, Puneet Kaur wrote:<br>
> > Hey all,<br>
> ><br>
> > I was able to get the webcam stream using gStreamer through this :<br>
> ><br>
> > self.src = Gst.ElementFactory.make('autovideosrc', None)<br>
> > self.sink = Gst.ElementFactory.make('autovideosink', None)<br>
> ><br>
> > (and more related corde...)<br>
><br>
> Good.<br>
><br>
> > but how to modify in order to store the image (on click) to a file /<br>
> buffer ?<br>
> ><br>
> > I tried : <br>
> ><br>
> > 1) gdk_display = GdkX11.X11Display.get_default()<br>
> > gdk_window = GdkX11.X11Window.foreign_new_for_display<br>
> (gdk_display,self.xid)<br>
><br>
><br>
> the above two lines for fetching gdk window from a given xid<br>
> <br>
><br>
> > width = gdk_window.get_width()<br>
> > height = gdk_window.get_height() <br>
><br>
><br>
> width and height of the gdk window<br>
> <br>
><br>
> > ims = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) <br>
><br>
><br>
> make a cairo surface <br>
><br>
> <br>
> > pb = Gdk.pixbuf_get_from_window(gdk_window, 0, 0, width, height)<br>
><br>
><br>
> get the pixbuf from the gdk window<br>
> <br>
><br>
> > cr = cairo.Context(ims) <br>
><br>
><br>
> set the cairo context <br>
><br>
><br>
> <br>
> > Gdk.cairo_set_source_pixbuf(cr, pb, 0, 0) <br>
><br>
><br>
> set cairo source<br>
> <br>
><br>
> > cr.paint()<br>
><br>
><br>
><br>
> paint on the cairo context and then save the surface by : ims.write_to_png<br>
> ('testimage'+self.snapshot_name()+'.png') <br>
><br>
><br>
><br>
><br>
> How are you copying the camera image to the surface? I can't see how<br>
> you do that in the above example.<br>
><br>
><br>
><br>
> ^<br>
<br>
</div></div>Sorry, I don't understand. Yes, I agree with the comments you added<br>
to the code, but I don't see how you are copying the camera image to<br>
the surface. As far as I can tell, you _must_ end up with a blank<br>
surface if you don't put anything on it.<br>
<div class="im HOEnZb"><br>
--<br>
James Cameron<br>
<a href="http://quozl.linux.org.au/" target="_blank">http://quozl.linux.org.au/</a><br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Gonzalo Odiard<br><br><div>SugarLabs - Software for children learning <br></div></div>
</div>