Yo normalmente valido el tipo y el tamaño y si es mayor la redimensiono. Y la guardo en una Bd, (estoy trabajando con imagenes almacenadas en una bd) ya que es una galeria pequeña..
Pero mi pregunta es puedo validar el tamaño apenas lo estoy cargando? por la web? asi como valido el tipo y el peso?
Adjunto el modelo con el que trabajo (es una parte pero es la parte que hace el redimensionamiento y verifica el tipo y tamaño
Código PHP:
define("ALTURA", 60);
define("ANCHO", 468);
# Nombre del archivo temporal del thumbnail
define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podra ser:
// define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
# Servidor de base de datos
define("DBHOST", "localhost");
# nombre de la base de datos
define("DBNAME", "mibd");
# Usuario de base de datos
define("DBUSER", "aaaa");
# Password de base de datos
define("DBPASSWORD", "aaaaa");
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
// Variables de la foto
$name = $_FILES["foto"]["name"];
$type = $_FILES["foto"]["type"];
$tmp_name = $_FILES["foto"]["tmp_name"];
$size = $_FILES["foto"]["size"];
//verificamos el tamaño de la Imagen
if($_FILES["foto"]["size"]>100960)
{
echo '<br><br><br><center><img src="images/logo.gif"> ' ;
echo '<br><br><br><center><img src="images/error-peso.jpg"> ' ;
echo '<br><br><br><br><br><a href="javascript:history.back()"> <img src="images/regresar.jpg" border="0"> </a>' ;
exit;
}
// Verificamos si el archivo es una imagen válida
if(!in_array($type, $mimetypes))
{
echo '<br><br><br><center><img src="images/logo.gif"> ' ;
echo '<br><br><br><center><img src="images/error-tipo.jpg"> ' ;
echo '<br><br><br><br><br><a href="javascript:history.back()"> <img src="images/regresar.jpg" border="0"> </a>' ;
exit;
}
// Creando el thumbnail
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
$img = imagecreatefromjpeg($tmp_name);
break;
case $mimetypes[2]:
$img = imagecreatefromgif($tmp_name);
break;
case $mimetypes[3]:
$img = imagecreatefrompng($tmp_name);
break;
}
$datos = getimagesize($tmp_name);
//$ratio = ($datos[1]/ALTURA);
// $ancho = 468;
//$ancho = round($datos[0]/$ratio);
$thumb = imagecreatetruecolor(ANCHO, ALTURA);
imagecopyresized($thumb, $img, 0, 0, 0, 0, ANCHO, ALTURA, $datos[0], $datos[1]);
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, NAMETHUMB);
break;
case $mimetypes[2]:
imagegif($thumb, NAMETHUMB);
break;
case $mimetypes[3]:
imagepng($thumb, NAMETHUMB);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen($tmp_name, "rb");
$tfoto = fread($fp, filesize($tmp_name));
$tfoto = addslashes($tfoto);
fclose($fp);
# contenido del thumbnail
$fp = fopen(NAMETHUMB, "rb");
$tthumb = fread($fp, filesize(NAMETHUMB));
$tthumb = addslashes($tthumb);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($tmp_name);
@unlink(NAMETHUMB);
// Guardamos todo en la base de datos
#nombre de la foto