Difference between revisions of "Camera.takePicture"

From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
Line 7: Line 7:
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
 
(boolean) = camera.takePicture()
 
(boolean) = camera.takePicture()
</source>
+
</syntaxhighlight>
  
 
This function must be called while preview is active, that is Camera.start() has been called.
 
This function must be called while preview is active, that is Camera.start() has been called.
Line 45: Line 45:
 
Camera.setFlash(0) --Set back flash to auto
 
Camera.setFlash(0) --Set back flash to auto
 
end)
 
end)
</source>
+
</syntaxhighlight>
  
 
{{Camera}}
 
{{Camera}}

Latest revision as of 14:27, 13 July 2023

Available since: Gideros 2021.8
Class: camera

Description

Takes a picture.

(boolean) = camera.takePicture()

This function must be called while preview is active, that is Camera.start() has been called.

If it returns true, then the platform will asynchronously take a picture from the Camera (eventually using flash) then call Camera.onEvent callback one or more times.

It is your responsability to define Camera.onEvent before calling Camera.takePicture()

Camera.onEvent function takes two arguments:

  • a number, indicating the type of event
  • a data buffer (string) depending on the event type

Event types are:

  • 0: shutter sound is triggered, data is empty (if supported)
  • 1: uncompressed image ready, data contains the uncompressed image (android only, optional)
  • 2: jpeg image ready, data contains jpeg image. This event is always fired if takePicture() was successful

Return values

Returns (number) False if an error occured

Example

require "camera"
local cw,ch=512,512 --Preview requested size
local pw,ph=8192,8192 -- Request a very large picture, os will give us what it can do at best
Camera.texture=RenderTarget.new(cw,ch,true)
cw,ch,pw,ph=Camera.start(Camera.texture,dev,pw,ph)
print("Using Camera Size:",cw,ch, "Picture:",pw,ph)

Core.asyncCall(function()
	Core.yield(1) --Wait one second
	Camera.setFlash(2) --Enable flash
	Camera.onEvent=function(evt,data)
		print("Event:",evt,"Data:",#data)
	end
	print("takePic",Camera.takePicture())
	Camera.setFlash(0) --Set back flash to auto
end)