procesamiento de una imagen en el servidor
4 seguidores
Mi duda es la siguiente:
Tengo un cliente que tiene qu actualizar una base de datos con imagenes (es decir un sistema que linka on imagenes).
Su camara crea imagenes grandes, las procesa con un programita que le genera un thumbnail y la imagen correspondiente, las sube a internet mediante un formulario file.upload() con php y ya esta.
Me gustaria que el cliente tuviera independencia del programita este.
¿Hay algun metodo en php que procese imagen?
Es decir, mandar una imagen al servidor y que tras procesarla genere un thumbnail y una imagen.
Si encima, pudiera establecer un parametro de compresion, seria la bomba.
Si alguien sabe algo os agradeceria que me guiaseis un poco
Saludotes
Josh
Si, php con la libreria GD lee imagenes GIF, PNG, JPEG, TIFF y PSD y genera PNG y JPEG con la cálidad y tamaño que quieras (tb hace blendings, mete fuentes ttf, etc)
Mira en http://www.php.net/manual/es/ref.image.php
Tambien tienes ImageMagik aunque yo no lo he probado.
En ambos casos tienes que mirar que tu proveedor de hosting lo tenga instalado.
lemark
gracias josh,
lo estudiare detenidamente y si llego a alguna conclusion posteo el codigo
saludos
orange
El problema con estas cosas siempre es que tienes que toquetear la configuración del Apache o del PHP (a no ser que uses las funciones de la implementación standard), y como tu hosting no te deje olvídate.
Aquí los tutoriales de PHPBuilder
GD1 GD2 GD3 GD4
Y uno para crear SWF
Flash con PHP
lemark
Gracias por los tutoriales,Cuando tenga tiempo les echo un vistazo.
El servidor donde esta alojada la pagina tiene el modulo , uuffff... menos mal¡¡. Pero me lo instalare en el local pa hacer pruebas tambien.
Aqui os paso el codigo por si alguna vez se os presenta algo parecido:
<code><?php
$uploadpath = 'img/img_tmp/';
$source = $HTTP_POST_FILES['file1']['tmp_name'];
$dest = '';
$nombre='';
function subir($uploadpath,$source){//principio funcion
global $nombre, $dest, $referencia;
if ( ($source != 'none') && ($source != '' )) { // principio if
$imagesize = getimagesize($source);
//La referencia es lo que me permite
//identificar la imagen con los valores
// de la base de datos
for ($r=0;$r<10-strlen($referencia);$r++){
$ceros.="0";
}
switch ( $imagesize[2] ) {
case 0:
break;
case 1: $nombre =$ceros.$referencia.'.gif';
break;
case 2: $nombre =$ceros.$referencia.'.jpg';
break;
case 3: $nombre =$ceros.$referencia.'.png';
break;
}
$dest = $uploadpath.$nombre;
move_uploaded_file( $source, $dest );
}//final if
}//final funcion
///////////////////////////
//
// Imagen subida
//
///////////////////////////
function resizeToFile ($sourcefile, $dest_x, $dest_y, $targetfile, $jpegqual)
{ // principio de funcion
$picsize=getimagesize("$sourcefile");
$source_x = $picsize[0];
$source_y = $picsize[1];
$source_id = imageCreateFromJPEG("$sourcefile");
$target_id=imagecreatetruecolor($dest_x, $dest_y);
$target_pic=imagecopyresampled($target_id,$source_id,
0,0,0,0,
$dest_x,$dest_y,
$source_x,$source_y);
imagejpeg ($target_id,"$targetfile",$jpegqual);
}//final funcion
function elimina($dest)
{
///////////////////////////////
//borra la imagen temporal
///////////////////////////////
unlink($dest);
}
subir($uploadpath,$source);
resizeToFile( $dest,126,94,'img/img_peq/'.$nombre, 70);
resizeToFile( $dest,408,306,'img/img_gr/'.$nombre, 70);
elimina($dest);
?></code>
y un formulario:
<code>
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="<?php echo $PHP_SELF;?>">
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="800000">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="1">
Imagen
<INPUT TYPE="FILE" NAME="file1">
<BR>
<BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM></code>
hasta pronto
Josh
Fíjate que hay un switch determinado el tipo de imagen a partir del valor [2] del array que devuelve getImageSize(). Es conveniente que le pongas un default: al switch por si alguien sube un fichero que no es una imagen, ya que si no te petará el script.
lemark
ya he segido tu consejo, no habia tocado demasiado el switch, y la verdad me he dado cuenta de que esto es mas correcto:
<code>.
.
.
case 2: $nombre =$ceros.$referencia.'.jpg';
$dest = $uploadpath.$nombre;
move_uploaded_file( $source, $dest );
break;
default: echo ("no es un formato correcto");
}//final switch</code>
Asi solo se sube si el formato es ".jpg"
gracias
Juanma
¿Conoceis alguna libreria o componente parecido para Asp?.