PhotoPartial
De KumbiaPHP Framework Wiki
PARTIAL PARA QUE TUS USUARIOS PUEDAN HACERSE UNA FOTO EN TU WEB Y UTILIZARLA COMO AVATAR
Yo seguí un tutorial sobre este tema en http://theproc.es/2011/10/5/31186/sacar-fotos-de-una-webcam-con-javascript-y-flash y pude crear un partial para KumbiaPHP con el apoyo también de esta otra página http://code.google.com/p/jpegcam/
A continuación mostrare los elementos que he utilizado:
Sumario
/app/controllers/users_controllers.php
- Una acción en un controlador para leer el partial y salvar la foto
public function photo( $action='' )
{
if ( $action == 'save' ) Load::model( 'users' )->photo();
View::template( '' );
}
/app/views/users/photo.phtml
- La vista que incluye el partial
<?php View::partial( 'webcam' ); ?>
- El partial que requiere jquery cargado previamente y donde tenemos la mayor parte de los elementos, como el container, los controles para manejar la webcam, la librería del plugin, la configuracion del plugin, algo de css via jquery y las acciones de los controles
<div id="webcam"></div>
<p id="webcam_controls">
<button class="go" type="button">Go</button>
<button class="no" type="button">No</button>
<button class="ok" type="button">Ok</button>
</p>
<?php echo Tag::js( 'webcam' ); ?>
<script>
webcam.set_api_url( '/users/photo/save' );
webcam.set_swf_url( '/swf/webcam.swf' );
webcam.set_quality( 90 );
webcam.set_shutter_sound( true );
webcam.shutter_url = '/mp3/shutter.mp3';
webcam.set_hook( "onLoad", null );
webcam.set_hook( "onComplete", null );
webcam.set_hook( "onError", null );
$( '#webcam' ).html( webcam.get_html( 320, 240 ) );
$( '#webcam_controls' ).css( { position:'absolute', top:'5px', left:'5px' } );
$( '#webcam_controls button.no, #webcam_controls button.ok' ).hide();
// LO SIGUIENTE ES PARA AJUSTAR EL CSS A UN DIALOG DE JQUERY-UI
$( '#webcam' ).parent().css( 'padding', 0 ).parent().css( { height:'auto', width:'auto' } );
$( '#webcam_controls button.go' ).on( 'click', function()
{
webcam.reset();
webcam.freeze();
$( '#webcam_controls button.go' ).hide();
$( '#webcam_controls button.no, #webcam_controls button.ok' ).show();
});
$( '#webcam_controls button.no' ).on( 'click', function()
{
webcam.reset();
$( '#webcam_controls button.go' ).show();
$( '#webcam_controls button.no, #webcam_controls button.ok' ).hide();
});
$( '#webcam_controls button.ok' ).on( 'click', function()
{
webcam.upload();
location='/users/your';
});
</script>
/app/models/users.php
- El metodo que es llamado con la acción que salva la foto
public function photo()
{
$user = Load::model( 'users' )->getIt();
$file = PUB_PATH . "img/photos/$user->nick.jpg";
file_put_contents( $file, file_get_contents( 'php://input' ) );
}
/app/views/users/index.phtml
- Y un trozo de código donde mostar la foto en una vista, donde utilizo como nombre del archivo el nick del usuario que lo cargo previamente en $user->nick
if ( file_exists( PUB_PATH . "img/photos/$user->nick.jpg" ) )
{
?>
<img alt="<?php echo $user->nick; ?> avatar" src="/img/photos/<?php echo $user->nick; ?>.jpg" width="120" />
<?php
}
RECUERDA !! Sientete libre de modificar este tuto siempre que sea para completarlo o mejorarlo.
Y no olvides que todos seriamos ricos y sabios si cada unos de nosotros comparte lo que sabe.
- Tuto by Demonio69