Foro oficial de PHP

Dificil....pero pues debieron utilizar PHP-GTK, es lo unico que se me ocurre.

Como era el funcionamiento del aplicativo???, mostraba la imagen el navegador? la administracion del programa era desde algun browser?.
Por que si es asi, lo mas probable es que el Front End del programa sea hecho en php, pero la captura de la imagen sea completamente desarrollada en .NET y ahi si tiene sentido decir que fue desarrollado en PHP y .NET
cierto..

Lo mejor para ese tipo de programas es java...
 
Dificil....pero pues debieron utilizar PHP-GTK, es lo unico que se me ocurre.

Como era el funcionamiento del aplicativo???, mostraba la imagen el navegador? la administracion del programa era desde algun browser?.
Por que si es asi, lo mas probable es que el Front End del programa sea hecho en php, pero la captura de la imagen sea completamente desarrollada en .NET y ahi si tiene sentido decir que fue desarrollado en PHP y .NET

El aplicativo que nos ofrecieron en la empresa era una interfaz web donde se veía en una ventana el video de la camara web y con un botón tomaba la foto.

Pues en Internet encontré un código de un applet para eso... como no sé mucho de Java, voy a ver que le saco y les comento haber como me vá.


Muchas gracias...
 
Hola, me da verguenza con ustedes...
Pero el código que conseguí por Internet que supuestamente captura una imagen desde la cámara web es el siguiente:

// JavaScript Document


/*
* jfromlAfoto.java
*
* Created on 13 de febrero de 2009, 12:43 AM
*/
package org.me.imagen;

import com.mysql.jdbc.PreparedStatement;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;

/**
*
* @author JGregPerezE
*/
public class jfromlAfoto extends javax.swing.JApplet {

/** Initializes the applet jfromlAfoto */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {

public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}

/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

panel1 = new java.awt.Panel();
label1 = new java.awt.Label();
txt_cedula = new java.awt.TextField();
panel2 = new java.awt.Panel();
panel3 = new java.awt.Panel();
btn_camara_on = new java.awt.Button();
btn_camara_off = new java.awt.Button();
btn_captura = new java.awt.Button();
button1 = new java.awt.Button();

label1.setText("Numero de Cedula");

javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
panel1.setLayout(panel1Layout);
panel1Layout.setHorizontalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cedula, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel1Layout.setVerticalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_cedula, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
panel2.setLayout(panel2Layout);
panel2Layout.setHorizontalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 336, Short.MAX_VALUE)
);
panel2Layout.setVerticalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 145, Short.MAX_VALUE)
);

btn_camara_on.setLabel("Activar WC");
btn_camara_on.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_camara_onActionPerformed(evt);
}
});

btn_camara_off.setLabel("Desactivar WC");
btn_camara_off.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_camara_offActionPerformed(evt);
}
});

btn_captura.setLabel("Capturar Img");
btn_captura.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_capturaActionPerformed(evt);
}
});

button1.setLabel("Guardar Img");
button1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
button1ActionPerformed(evt);
}
});

javax.swing.GroupLayout panel3Layout = new javax.swing.GroupLayout(panel3);
panel3.setLayout(panel3Layout);
panel3Layout.setHorizontalGroup(
panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btn_camara_on, javax.swing.GroupLayout.DEFAULT_SIZE, 117, Short.MAX_VALUE)
.addComponent(btn_camara_off, javax.swing.GroupLayout.DEFAULT_SIZE, 117, Short.MAX_VALUE)
.addComponent(btn_captura, javax.swing.GroupLayout.DEFAULT_SIZE, 117, Short.MAX_VALUE)
.addComponent(button1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel3Layout.setVerticalGroup(
panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(btn_camara_on, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_camara_off, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_captura, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(button1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(50, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>

private void btn_camara_onActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
player = null;
di = CaptureDeviceManager.getDevice(str2);
ml = new MediaLocator("vfw://0");
try {
player = Manager.createRealizedPlayer(ml);
player.start();
comp = player.getVisualComponent();
if (comp != null) {
//getContentPane().add(comp);
this.panel2.add(comp);
}
comp.setBounds(10, 10, 160, 120);
} catch (Exception e) {
e.printStackTrace();
}
}

private void btn_camara_offActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
player.close();
player.deallocate();
}

private void btn_capturaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
img = btoi.createImage(buf);
panelImagen.setImage(img);
this.panel2.add(panelImagen);
panelImagen.setBounds(180, 10, 160, 120);
}

private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

//
// img es la variable donde esta la imanen
//TODO ESTO ES UN PROBLEMA

Class.forName("org.gjt.mm.mysql.Driver");
Connection miConeccion = DriverManager.getConnection("jdbc:mysql://localhost/regpalace", "root", "");
String INSERT_PICTURE = "insert into tst_000_foto(numero, foto) values (?, ?)";
PreparedStatement stmt = null;
ByteArrayInputStream img2 = new ByteArrayInputStream(img);
try {
miConeccion.setAutoCommit(false);
InputStream img3 = new InputStream(img2);
stmt = miConeccion.prepareStatement(INSERT_PICTURE);
stmt.setString(1, "001");
stmt.setBinaryStream(2, img3, (int) img2.length());
stmt.executeUpdate();
miConeccion.commit();
} finally {
stmt.close();
img2.close();
}


}
// Variables declaration - do not modify
private java.awt.Button btn_camara_off;
private java.awt.Button btn_camara_on;
private java.awt.Button btn_captura;
private java.awt.Button button1;
private java.awt.Label label1;
private java.awt.Panel panel1;
private java.awt.Panel panel2;
private java.awt.Panel panel3;
private java.awt.TextField txt_cedula;
// End of variables declaration

//VARIABLES PROPIAS
public static Player player = null;
public CaptureDeviceInfo di = null;
public MediaLocator ml = null;
public Component comp = null;
//public Buffer buf = null;
//public BufferToImage btoi = null;
public Image img = null;
public VideoFormat vf = null;
public BufferedImage imange = null;
ImagePanel panelImagen = new ImagePanel();
private byte[] data = null;

// parametros


// SI ALGUIEN SABE COMO HACERLO CON ESTO DIGAMELO
class ImagePanel extends Panel {

public Image myimg = null;

public ImagePanel() {
setLayout(null);
setSize(160, 120);
}

public void setImage(Image img) {
this.myimg = img;
repaint();
}

public void paint(Graphics g) {
if (myimg != null) {
g.drawImage(myimg, 0, 0, this);
}
}
}
}


Y sé que para llamarlo desde una página php tengo que poner dentro del <HEAD> esto:

<script type="text/javascript" src="foto.js"></script>

Si por ejemplo hubiera llamado al script anterior foto.js


Pero después?
No tengo la más mínima idea... que función del js tengo que llamar? Tengo que crear algún formulario dentro de la página de php?

Se me cae la cara de la verguenza pero no sé que hacer... ayuda por favor
 
en php.... mmmmm huy lo veo grave...
que yo sepa no se puede.... pero por q no lo haces con un applet y lo trabajas con php..

claro que si se puede, es cuestion de integrarlo...

crean un .exe que tome la imagen y la guarde en x directorio... php se encargara de ejecutar ese .exe para tomar la foto e ir al directorio donde esta almacenada... y listo ahi la puede copiar y mostrar al usuario... solo es que usen la cabeza
 
claro que si se puede, es cuestion de integrarlo...

crean un .exe que tome la imagen y la guarde en x directorio... php se encargara de ejecutar ese .exe para tomar la foto e ir al directorio donde esta almacenada... y listo ahi la puede copiar y mostrar al usuario... solo es que usen la cabeza

jejeje.. crea el .exe en php
 
lo que yo dije.....el front end del programa o la administracion del mismo probablemente es en php, pero en si el que toma la foto y esas cosas no creo que sea php.
 
lo que yo dije.....el front end del programa o la administracion del mismo probablemente es en php, pero en si el que toma la foto y esas cosas no creo que sea php.

eso intento decir hace rato...
JimmyZU..... y lo tienes en applet? y funciona?
entonces ya lo tienes hecho.... implementado a través de php como ya han dicho varios por aquí.
con Java... dile a Yeison q te ayude...=)


saludos
 
pues aunque parezca gracioso si se puede, una de esas opciones en bambalam y otra es mas conocida: roadsend...
suerte!!..

wow, esa si no me la sabia.....

pero PHP fue pensado para web y pues supongo que el proceso de generar un .exe sera mucho mas complicado, requerira librerias y no se q mas cosas asi que pues......

no se, supongo que lo mas probable es que ese .exe de tomar la foto no haya sido creado con php
 
wow, esa si no me la sabia.....

pero PHP fue pensado para web y pues supongo que el proceso de generar un .exe sera mucho mas complicado, requerira librerias y no se q mas cosas asi que pues......

no se, supongo que lo mas probable es que ese .exe de tomar la foto no haya sido creado con php

exacto.... quien se complica haciendo eso en php... (q aun no creo q genere un .exe, hasta q lea) si en java se hace rapidito y la enlazas con php a la bd... easy...
 
HOLA. ESTE CODIGO QUE LES DARE ES PARA PODER HACER UN "CONTACTO" EN INTERNET A UN MAIL

OSEA, LLENAR UN FORMULARIO Y AL DARLE ENVIAR QUE LO EMVIE DIRECTAMENTE A TU CASILLA DE CORREO.

(CODIGO HTML "FORMULARIO")
MAIL.HTML
<html>
<head>
<title></title>
</head>
<body>

<form action="mail.php" enctype="multipart/form-data" method="post">

Name:<br /> <input name="name" type="text" value="" /><br />

Apellido:<br /> <input name="apellido" type="text" value="" /><br />

Tel:<br /> <input name="tel" type="text" value="" /><br />

Email:<br />
<input name="email" type="text" value="" /><br />

Message:<br />
<textarea name="themessage" cols="20" rows="8"></textarea><br />

<input type="submit" name="Submit" value="Enviar" />

</form>
</body>
</html>

(CODIGO PHP "ENVIA") A ESTE LE LLAMAREMOS MAIL.PHP



<?php

if (isset($_POST['Submit'])) {
// Here we gather the posted data and pack it all into local variables
$name = $_POST['name'];
$apellido = $_POST['apellido'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$themessage = $_POST['themessage'];

// ---- Begin cleansing(filtering) the data to secure from hacks ----

// Strip Slashes that could cause security problems
$name = stripslashes($name);
$apellido = stripslashes($apellido);
$tel = stripslashes($tel);
$email = stripslashes($email);
$themessage = stripslashes($themessage);

// Strip tags that could cause security problems
$name = strip_tags($name);
$apellido = strip_tags($apellido);
$tel = strip_tags($tel);
$email = strip_tags($email);
$themessage = strip_tags($themessage);

// ---- Begin error handling for required form fields you want ----

if ((!$name) || (!$apellido) || (!$tel) || (!$email) || (!$themessage)) {
$error_msg = "You did not submit the following required info:<br /><br />";
if(!$name) {
$error_msg .= "Your Name<br />";
}

if(!$apellido) {
$error_msg .= "Apellido<br />";
}

if(!$tel) {
$error_msg .= "Tel<br />";
}

if (!$email) {
$error_msg .= "Your Email Address<br />";
}
if (!$themessage){
$error_msg .= "Your Message<br />";
}
print "$error_msg";
print "<br><a href=\"javascript:history.go(-1)\">Go back</a>";
exit(); // exit the script

} else {

// Change this to your email address
$to = "djaguuuu@gmail.com";
// Change this to your web site
$from = "$email";

$subject = "Message from your Web Site";
// Begin an HTML email message and pack it into the variable "$message"
$message = <<<EOF
<html>
<body bgcolor="#F0EFE3">

<h3>Message from your website:</h3> <br />
<tr><td>NOMBRE: <td>$name<br />
<tr><td>APELLIDO: <td>$apellido<br />
<tr><td>TELEFONO: <td>$tel<br />
<tr><td>E-MAIL: <td>$email<br />
<tr><td>MENSAJE: <p>$themessage

</body>
</html>
EOF;
// End of the HTML message
$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";

mail($to, $subject, $message, $headers);

$msg_back = "<h4>Thanks $name, we will get back to you ASAP.</h4>";

print "$msg_back";

} // close the "else" statement nest

} // close initial Submit "if" statement nest

?>






OBIAMENTE EL CODIGO SE PODRA MODIFICAR DEACUERDO A LAS NECESIDADES DE CADA UNO. COMO VERAN ES MUY SENCILLO.
CUANDO SE AGREGA ELGO EN EL FORMULARIO HTML SE AGREGA EN EL PHP PARA QUE PUEDA APARECER EN EL MAIL DEL DESTINATARIO.

EJEMPLO: AGRAGO DOMICILIO EN EL FORMULARIO HTML

ENTONCES TENGO QUE AGREGAR TAMBIEN FORMULARIO AL CODIGO PHP.



ES NECESARIO SABER QUE NO TODOS LOS HOSTING SEAN GRATUITOS O PAGOS ACEPTAN LA FUNCION MAIL
EN EL CASO DE QUE SEA PAGO ABRIA QUE PEDIR PARA ACTIVARLA O ALGO SIMILAR

Y SI ES GRATUITO LES RECOMIENDO http://www.000webhost.com
EN ESTE FRRE HOSTING DE PHP LES PERMITIRA SUBIR TODOS LOS ARCHIVOS MEDIANTE FTP
Y TENER HOSTING PHP CONTANDO TAMBIEN CON LA FUNCION MAIL ACTIVADA.

POR MAS DUDAS NO DUDEN EN CONSULTAR...
MI MAIL: DJAGUUUU@GMAIL.COM
 
Bueno bueno, depronto ya lo habian visto, pero de todas formas para los que sepan algo de programacion web ahi les dejo este jueguito de hackear una pagina.

a ver kien completa los 16 niveles mas rapido >D

http://isatcis.com/

ya voy en nivel 7....al rato cuando me kede un poco de tiempo aki en la office miro como pasar al otro nivel
 
crear un .exe en con lenguaje php si se puede. pero yo me refiero es hacer un programita en java o c que capture la imagen...
 
Y apartandome un poco de las respuestas de todos ustedes, que de hecho varias han sido muy constructivas. El código de Java que puse en un post anterior en letra azul... funciona? O que hace? Se compila? Como lo llamo desde PHP?

De pronto alguien ya tiene el código en otro lenguaje que tome la foto?

La limitante que tengo es que es un programa para el trabajo y no hay licencias de ningún lenguaje... :muerto:
 
Y apartandome un poco de las respuestas de todos ustedes, que de hecho varias han sido muy constructivas. El código de Java que puse en un post anterior en letra azul... funciona? O que hace? Se compila? Como lo llamo desde PHP?

De pronto alguien ya tiene el código en otro lenguaje que tome la foto?

La limitante que tengo es que es un programa para el trabajo y no hay licencias de ningún lenguaje... :muerto:

compadre yo lo tengo en c++
me dices y t lo paso.
 
Compañero, esta excelente el programa... de pronto se puede hacer que al llamar el programa (al ejecutarlo), éste tome la foto automaticamente sin necesidad de dar clic en ningún botón?

claro... q tome la foto al ejecutarse...
pera me desocupo un poco y lo hago y te lo envió..
saludos.. :cool:
 
una pregunta.... a ver quien me colabora..
necesito grabar unas variables en la base de datos al momento que la persona de clic sobre una imagen que lleva a una variable que es la que determina el archivo pdf que va a descargar.
alguien tiene idea de como grabar los datos al momento de dar clic???
 

Los últimos temas