Foros del Web » Programando para Internet » PHP »

Cambiar tamaño de una foto online en el servidor?

Estas en el tema de Cambiar tamaño de una foto online en el servidor? en el foro de PHP en Foros del Web. bueno, pues todos los scripts que han subido me han servido de mucho, recientemente hize un sistema de fotografias en el cual los usuarios suben ...

  #31 (permalink)  
Antiguo 03/10/2006, 11:05
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
problemas al subir el archivo

bueno, pues todos los scripts que han subido me han servido de mucho, recientemente hize un sistema de fotografias en el cual los usuarios suben sus fotos para luego ser vistas y votadas...en modo local funcionó perfectamente bien, pero al momento de subir el sistema al hosting resulto que el servidor no tiene habilitadas varias funciones de php (me imagino ke por seguridad) como la funcion copy() o la imagejpeg() y por lo tanto no puedo copiar mis imagenes redimensionadas a las carpetas ke tengo en el servidor.... esto ya me habia pasado con otro tipo de archivos y lo que hize fue subirlos con FTP con una funcion...sin embargo, la misma funcion no me ha servido para subir las imagenes, no se ke es lo ke estoy haciendo mal o si de plano no es posible subir el resultado del script (la imagen redimensionada) a la carpeta de mi servidor por medio de FTP, saludos y espero ke me respondan :(
  #32 (permalink)  
Antiguo 03/10/2006, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Con respecto a la función "copy()" si la usas para mover tus archivos que subistes por HTTP (con tu formulario HTML y campo file) debes usar la función: move_uploaded_file()

El tema de "imagejpeg()" .. depende directamente de que tu servidor tenga instalada la extensión GD (www.php.net/gd).

Cita:
no se ke es lo ke estoy haciendo mal o si de plano no es posible subir el resultado del script (la imagen redimensionada) a la carpeta de mi servidor por medio de FTP, saludos y espero ke me respondan :(
Nosotros tampoco sabemos que pasará si no expones el código y explicas detalladamente que es lo que sucede: mensajes de error? .. comportamiento anormal? .. Si no expones más datos sobre tu problema sólo obtendrás respuestas tipo "podría ser" cuando lo mejor ese que nos des todos los antecedentes del problema. Recuerda que Nosotros no estamos frete a tu código y probado tú código ni en tus servidores. Nos tienes que explicar y dar datos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #33 (permalink)  
Antiguo 05/10/2006, 11:15
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
sorry jeje

perdon por no pegar el codigo, es ke tenia mucho apuro y creo ke me meocioné jeje pero muchisisimas gracias por kerer ayudar. mira, esta es parte del churrote de codigo ke tengo que en parte es lo que ya han pegado aki pero con algunas modificaciones debido a que mi servidor no acepta algunas funciones:

include ("funcftp.php");
$campo="uppic";
$anchura=480;
$pos="L-T";
$wmdist=0;
$c1=95;
$c2=97;


//asigna las variables
$name=$_FILES['uppic']['name'];
$type=$_FILES['uppic']['type'];
$image_name = $name;

//Imagen original en el servidor
$temp=$_FILES['uppic']['tmp_name'];

//Objeto con el que trabajará el programa
if($type=="image/pjpeg"){
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");
}
if($_FILES[$campo]['type']=="image/gif"){
$img = @imagecreatefromgif($temp) or die("No se encuentra la imagen $image_name<br>\n");
$image_name = str_replace(".gif", ".jpg", $image_name);
}
if($_FILES[$campo]['type']=="image/x-png"){
$img = @imagecreatefrompng($temp) or die("No se encuentra la imagen $image_name<br>\n");
$image_name = str_replace(".png", ".jpg", $image_name);
}
//Para que acepte la transparencia del PNG
imagealphablending($img, true);
//INICIA PROCESO
$dimensiones = getimagesize($temp); //Dimensiones originales de la imagen
$ratio = ($dimensiones[0] / $anchura);
$altura = round($dimensiones[1] / $ratio);
$image = imagecreatetruecolor($anchura,$altura); //crea la nueva imagen
$FFF = imagecolorallocate($img, 255,255,255);
imagefill($image, 0, 0, $FFF);
imagecopyresampled ($image, $img, 0, 0, 0, 0, $anchura, $altura, $dimensiones[0], $dimensiones[1]);//reescala




$Directorio = "/www/dir/pics/";
$archivo_local = $image;
$archivo_remoto = $filename;
SubirArticulo($archivo_local, $archivo_remoto, $Directorio);


//mueve la imagen al server (el segundo parámetro es la calidad)
imagedestroy($image); //destruye image
imagedestroy($img); //destruye la imagen "origen"




aki te pego el codigo del archivo del INCLUDE que son las funciones ftp:

# FUNCIONES FTP
# CONSTANTES
# Cambie estos datos por los de su Servidor FTP
define("SERVER","miserver.com"); //IP o Nombre del Servidor
define("PORT",21); //Puerto
define("USER","user"); //Nombre de Usuario
define("PASSWORD","password"); //Contraseña de acceso
define("PASV",true); //Activa modo pasivo

# FUNCIONES

function ConectarFTP(){
//Permite conectarse al Servidor FTP
$id_ftp=ftp_connect(SERVER,PORT); //Obtiene un manejador del Servidor FTP
ftp_login($id_ftp,USER,PASSWORD); //Se loguea al Servidor FTP
ftp_pasv($id_ftp,PASV); //Establece el modo de conexión
return $id_ftp; //Devuelve el manejador a la función
}


function SubirArticulo($archivo_local,$archivo_remoto,$Dire ctorio){
//Sube archivo de la maquina Cliente al Servidor (Comando PUT)
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
ftp_chdir($id_ftp,$Directorio);
ftp_pwd($id_ftp);
ftp_put($id_ftp,$archivo_remoto,$archivo_local,FTP _BINARY);
//Sube un archivo al Servidor FTP en modo Binario
ftp_quit($id_ftp); //Cierra la conexion FTP
}




No recibo ningun mensaje de error del servidor, ningun comportamiento extraño o retraso en respuesta....simplemente parece ke todo funciona, pero cuando quiero ver la imagen no esta!...navego con el ftp a la carpeta y nada, no se encuentra la imagen, no la sube....si en vez de la imagen fuese un archivo cualquiera, o la imagen sin redimensionar ( la variable $uppic en vez de $image) si sube el archivo...ke es lo ke sucede??? :S

de antemano muchisimas gracias por la ayuda
  #34 (permalink)  
Antiguo 05/10/2006, 11:18
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
ahh y lo olvidaba....la variable $filename si esta asignada, en una parte más arriba del codigo ke no pege no vayan a creer ke ese es el error :P

gracias!
  #35 (permalink)  
Antiguo 05/10/2006, 11:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
]No recibo ningun mensaje de error del servidor, ningun comportamiento extraño o retraso en respuesta....simplemente parece ke todo funciona, pero cuando quiero ver la imagen no esta!.
Bueno .. usas muchas funciones con el "silenciador" puesto .. Es decir .. ese @ en las funciones y código en general por delante fuerza a PHP a que NO muestre posibles mensajes de error que obtengas.

Quitalo de momento para tus pruebas y para intentar ver algún mensaje de error que desvele el real problema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #36 (permalink)  
Antiguo 18/10/2006, 18:01
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 19 años, 3 meses
Puntos: 1
Hola ... muy bueno el código ... conseguí hacer lo que hace un montón me estaba partiendo la cabeza pero ... (siempre hay un pero)

No puedo conseguir que me guarde las imágenes en la base de datos ... aclaro un par de puntos ... no trabajo sobre la misma página ... apunto a una página diferente ... pego el código ...

Código PHP:
$ruta="../../images/home/";
$ruta_thumb "../../images/home/thumb/";
################################################################################################## 
# BEGIN imgResample2 
$campo $_FILES["imagen"];
function 
imgResample2 ($imagen$dir="../../images/home/"$anchura=250$anchura_thumb="100"$watermark=""$watermark_thumb=""$pos="L-T"$wmdist=0$c1=95$c2=97){ 

//Todo el código aquí

# END imgResample2 
##################################################################################################

//Ejecuto la función
imgResample2('imagen');
// ELIMINA IMAGEN ANTERIOR
$im mysql_query("select home_imagen_1, home_imagen_1_thumb from home");
$img mysql_fetch_array($im);
unlink("$ruta/$img[home_imagen_1]");
unlink("$ruta_thumb/$img[home_imagen_1_thumb]");
$clave time();
mysql_query("update home set home_imagen_1='".$clave."-".$fotos[0]."', home_imagen_1_thumb='".$clave."-".$fotos[1]."'");
$desde $_SERVER[HTTP_REFERER];
header ("Location: $desde");
exit; 
Alguien me puede echar una manito con esto ... debe ser una pavada pero tengo la cabeza medio quemada ... gracias desde ya

Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #37 (permalink)  
Antiguo 19/10/2006, 13:31
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 19 años, 3 meses
Puntos: 1
Pregunta

Perdón ... vi que el código que pegué al ponerlo resumido no queda claro ... aquí lo pego entero ...

A esta página php llega un Post con contenido html y una imagen ... acá pego la gestión sobre la imagen que es lo que no puedo guardar en la base de datos ... me interesa solamente el nombre de la imagen ... no la ruta completa ...

Código PHP:
if ($imagen != "") {
$tipo_archivo $_FILES["imagen"]['type'];
$tmp_name $_FILES["imagen"]["tmp_name"];
$name $_FILES["imagen"]["name"];
$datos getimagesize($imagen);
$tiempo time();
if (
$name!="" and !(strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")))

$ok 0;
$desde $_SERVER[HTTP_REFERER];
header("Location: $desde&error=no_extension");
exit;
}
else {
$ok 1;
}
if (
$name!="" and $ok == "1") {
$ruta="../../images/home/";
$ruta_thumb "../../images/home/thumb/";
$campo $_FILES["imagen"];
function 
imgResample2 ($imagen$dir="../../images/home/"$anchura=250$anchura_thumb="100"$watermark=""$watermark_thumb=""$pos="L-T"$wmdist=0$c1=95$c2=97){
if(
$_FILES["imagen"]['name']!=''){
if(
$dir!=""){
if(!
file_exists($dir)) mkdir($dir);
}
$name=$_FILES["imagen"]['name'];
$type=$_FILES["imagen"]['type'];
$image_name $name;
$temp=$_FILES["imagen"]['tmp_name'];
if(
$type=="image/pjpeg"){
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");
}
if(
$_FILES["imagen"]['type']=="image/gif"){
$img = @imagecreatefromgif($temp) or die("No se encuentra la imagen $image_name<br>\n");
$image_name str_replace(".gif"".jpg"$image_name);
}
if(
$_FILES["imagen"]['type']=="image/x-png"){
$img = @imagecreatefrompng($temp) or die("No se encuentra la imagen $image_name<br>\n");
$image_name str_replace(".png"".jpg"$image_name);
}
imagealphablending($imgtrue);
$dimensiones getimagesize($temp);
$ratio = ($dimensiones[0] / $anchura);
$altura round($dimensiones[1] / $ratio);
$image imagecreatetruecolor($anchura,$altura);
$FFF imagecolorallocate($img255,255,255);
imagefill($image00$FFF);
imagecopyresampled ($image$img0000$anchura$altura$dimensiones[0], $dimensiones[1]);
$pos explode("-",$pos);
$wmhorz=$pos[0];
$wmvert=$pos[1];
if(
$watermark != ''){
$logo imagecreatefrompng($watermark);
$margen $wmdist;
$logoW =imagesx($logo);
$logoH =imagesy($logo);
switch (
$wmhorz){
case 
"L":
$xpos=$margen;
break;
case 
"R":
$xpos=$anchura-$logoW-$margen;
break;
}
switch (
$wmvert){
case 
"T":
$ypos=$margen;
break;
case 
"B":
$ypos=$altura-$logoH-$margen;
break;
}
imagecopy($image$logo$xpos$ypos00$logoW$logoH);
imagedestroy($logo);
}
imagejpeg($image,"$dir$image_name"$c1
imagedestroy
($image);
imagedestroy($img);
if(
$anchura_thumb != || $anchura_thumb == $anchura || $anchura_thumb == "" || $anchura_thumb == NULL) {
$subdir "thumb";
if(
$dir!=""){
if(!
file_exists($dir.$subdir)) mkdir($dir.$subdir);
} else {
if(!
file_exists($subdir)) mkdir($subdir);
}
$name=$_FILES["imagen"]['name'];
$type=$_FILES["imagen"]['type'];
$thumb_name $subdir."/".$name;
$temp=$_FILES["imagen"]['tmp_name'];
if(
$type=="image/pjpeg"){
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");
}
if(
$_FILES["imagen"]['type']=="image/gif"){
$img = @imagecreatefromgif($temp) or die("No se encuentra la imagen $image_name<br>\n");
$thumb_name str_replace(".gif"".jpg"$thumb_name);
}
if(
$_FILES["imagen"]['type']=="image/x-png"){
$img = @imagecreatefrompng($temp) or die("No se encuentra la imagen $image_name<br>\n");
$thumb_name str_replace(".png"".jpg"$thumb_name);
}
imagealphablending($imgtrue);
$dimensiones getimagesize($temp);
$ratio_thumb = ($dimensiones[0] / $anchura_thumb);
$altura_thumb round($dimensiones[1] / $ratio_thumb);
$thumb imagecreatetruecolor($anchura_thumb,$altura_thumb);
$FFF imagecolorallocate($img255,255,255);
imagefill($thumb00$FFF);
imagecopyresampled ($thumb$img0000$anchura_thumb$altura_thumb$dimensiones[0], $dimensiones[1]);
if(
$watermark_thumb != ''){
$logo_thumb imagecreatefrompng($watermark_thumb);
$margen $wmdist;
$logoW_thumb =imagesx($logo_thumb);
$logoH_thumb =imagesy($logo_thumb);
switch (
$wmhorz){
case 
"L":
$xposThumb=$margen/2;
break; 
case 
"R":
$xposThumb=$anchura_thumb-$logoW_thumb-($margen/2); 
break; 
//end switch hotz
switch ($wmvert){
case 
"T":
$yposThumb=$margen/2;
break; 
case 
"B":
$yposThumb=$altura_thumb-$logoH_thumb-($margen/2); 
break; 

imagecopy($thumb$logo_thumb$xposThumb$yposThumb00$logoW_thumb$logoH_thumb); 
imagedestroy($logo_thumb); 
}
//TERMINA WATERMARK THUMB
imagejpeg($thumb,"$dir$thumb_name"$c2);
imagedestroy($thumb); 
imagedestroy($img); 
} else {
$thumb_name $image_name;
// end if != 0
//TERMINA THUMBNAIL
}
//$unique = time();
$resampled[0] = $dir.$image_name
$resampled[1] = $dir.$thumb_name;  
$resampled[2] = "<img src=\"$dir$image_name?i=$unique\">"
$resampled[3] = "<img src=\"$dir$thumb_name?i=$unique\">"
return 
$resampled

# END imgResample2 
imgResample2('imagen');
// ELIMINA IMAGEN ANTERIOR
$im mysql_query("select home_imagen_1, home_imagen_1_thumb from home");
$img mysql_fetch_array($im);
unlink("$ruta/$img[home_imagen_1]");
unlink("$ruta_thumb/$img[home_imagen_1_thumb]");
$clave time(); 
mysql_query("update home set home_imagen_1='".$clave."-".$image_name."', home_imagen_1_thumb='".$clave."-".$thumb_name."'");
}
$desde $_SERVER[HTTP_REFERER];
header ("Location: $desde");
exit;

__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:36.