Foros del Web » Programando para Internet » PHP »

script subir fotos

Estas en el tema de script subir fotos en el foro de PHP en Foros del Web. Hola amigos; Mi pregunta es la siguiente. Voy a hacer un script para que los usuarios puedan enviar fotos a mi web, subir fotos vamos... ...
  #1 (permalink)  
Antiguo 15/02/2006, 08:34
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
script subir fotos

Hola amigos;

Mi pregunta es la siguiente. Voy a hacer un script para que los usuarios puedan enviar fotos a mi web, subir fotos vamos... lo que quiero es que las fotos pesen como mucho 400 kb (por ejemplo). Pero claro, lo facil es poner limite de 400 y listos, pero los usuarios no siempre saben reducir las fotos. La pregunta es la siguiente pues... ¿como se podria hacer que un usuarios suba una foto y el script automaticamente la optimice a unos 400kbs? ¿es posible esto?

Gracias, un saludo
__________________
Saludos!
  #2 (permalink)  
Antiguo 15/02/2006, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Es posible usando las librerias GD (www.php.net/gd)

En principio podrías generar una imagen jpg y ahí jugar con el "ratio" de compresión de JPG para quedarte con algo que ronde ese peso en Kbytes vs calidad que resulte. Realmente esto es bastante "subjetivo" y más si dices que cualquier usuario llegará y podrá su imagen como buenamente la tenga.

Es necesario que se conserve el tamaño en pixels original de la imagen? ..Podrías empezar por ahí en la optimización: si son imagenes para ver en "pantalla" .. no necesitamos esas imagenes de "2272x1704 " que sale de una fotografía digital de una camara de unos "4 Megapixels". Lo más probable es que con "800x600" o incluso mucho menos .. nos sirva para presentar en el sitio. Con esa optimización de tamaño .. ya reduciras mucho el peso del archivo (imagen) .. luego puedes seguir aplicando la compresión en JPG para dejarlo todavía con menos "peso" a costa de calidad por supuesto.

Un saludo,
  #3 (permalink)  
Antiguo 15/02/2006, 10:12
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 12 años, 10 meses
Puntos: 1
Todavia sigo vivo! casi 14 horas pegado a la panatalla! Bueno, ojala te sirva este script, que lo consegui de un libro, tu eliges el tamaño en el que quieras mostrar la imagen.
Código PHP:
<?php

$image 
$HTTP_GET_VARS['image'];

if (!
$max_width)
  
$max_width 80;
if (!
$max_height)
  
$max_height 60;

$size GetImageSize($image);
$width $size[0];
$height $size[1];

$x_ratio $max_width $width;
$y_ratio $max_height $height;

if ( (
$width <= $max_width) && ($height <= $max_height) ) {
  
$tn_width $width;
  
$tn_height $height;
}
else if ((
$x_ratio $height) < $max_height) {
  
$tn_height ceil($x_ratio $height);
  
$tn_width $max_width;
}
else {
  
$tn_width ceil($y_ratio $width);
  
$tn_height $max_height;
}

$src ImageCreateFromJpeg($image);
$dst ImageCreate($tn_width,$tn_height);
ImageCopyResized($dst$src0000,
    
$tn_width,$tn_height,$width,$height);
header('Content-type: image/jpeg');
ImageJpeg($dstnull, -1);
ImageDestroy($src);
ImageDestroy($dst);

?>
, para este ejemplo, la imagen resultante quedara a 80 x 60, siempre tratara de mantener una proporcion entre el ancho-largo original.
La carga de imagenes la haras via FTP??? Si tienes algun codigo, me avisas, pq tambien estoy trabajando en algo similar, o si no, pues aqui estamos, por aqui tengo uno, pero que a veces me da problemas,
Espero te haya sido de ayuda, saludos.
__________________
:adios:
  #4 (permalink)  
Antiguo 15/02/2006, 10:56
 
Fecha de Ingreso: abril-2005
Ubicación: en Santa Cruz - España
Mensajes: 429
Antigüedad: 12 años, 8 meses
Puntos: 1
hola yo utilizo este que estaba en este foro:

<?php

header("Content-Type: image/jpeg");
//$imagen = imagecreatefromjpg($_GET["imagen"]);

if (isset($_GET["imagen"])) $imagen = imagecreatefromjpeg($_GET["imagen"]);
else exit(0);
if (isset($_GET["tam"])) $tam = explode("x", $_GET["tam"]);
else $tam = explode("x", "1x1");

$Ancho =imagesx($imagen);
$Alto =imagesy($imagen);

$ancho = $tam[0];
$alto = $tam[1];

$destino = ImageCreateTrueColor($ancho,$alto);
//$destino = ImageCreate($ancho,$alto);

ImageCopyResized($destino,$imagen,0,0,0,0,$ancho,$ alto,$Ancho,$Alto);

@imagejpeg($destino);
imagedestroy($destino);
imagedestroy($imagen);

?>


la imagen la pone del tamaño q queras
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




La zona horaria es GMT -6. Ahora son las 18:12.