Hola a todos,
necesito reducir el peso, la capcidad de una imagen si éste es superior a un límite que le fijo.
Hay alguna función de php que ya lo haga?
gracias
| |||
Reducir el tamaño de una imagen Hola a todos, necesito reducir el peso, la capcidad de una imagen si éste es superior a un límite que le fijo. Hay alguna función de php que ya lo haga? gracias |
| ||||
No una función propia, pero sí tienes herrameintas. Te dejo una función que hice hace tiempo: http://www.forosdelweb.com/showpost....65&postcount=3 La función propia te podrá servir aún no hagas el upload... para trabajar con otros formatos usa las funciones equivalentes (www.php.net/gd). Puedes basarte igual en las FAQ (busca las funciones de thumbnails) que están más completas. Si hay problemas mencionalos. Suerte!
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| |||
Qué librería? Jam1138, la función que me propones es más o menos la que necesito lo único que la función : ImageCreateFromJpeg() e ImageJPEG(), no me las reconoce, he de utilizar alguna dll? Gracias |
| ||||
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| |||
Si tengo este script para subir y colocar el archivo de imagen, ¿puedo utilizar la función sugerida? ¿Dónde la coloco? Código PHP: Última edición por jam1138; 23/11/2005 a las 15:45 |
| ||||
Se te agradeceria nngg que procuraras utilizar las etiquetas correspondientes cuando manejes código. Ve que se lee mejor por lo que es más sencillo ayudarte. Respecto a la función.. Si, sí te servirá. Para implementarla tendrias que poner la función al inicio de tu código. Desde donde dice "function redimencionar($file) {" hasta antes de "// Suponiendo se tiene <input type="file" name="imagen">". Posteriormente agregas la llamada a la función pasándole la ruta que haz generado: Código PHP: Ten en cuanta que lo que hará la función es REEMPLAZAR tu original y que es una función muy sencilla, muy simple (simplemente demostrativa). Lo que implica que reemplaze a la imágen es que el dato que estás guardando como "peso del archivo" ya no corresponderá ya que ese dato lo obtienes del archivo original, al ser redimencionado ya no persará lo mismo... tendrías que ocupar la función filesize() para obtener el nuevo dato y la tendrías que emplear antes de guardar la info en la BD y después de ocupar la función. Si entiendes eso te será sencillo modificarlo (solo es cuestión de ordenar las cosas), si tienes problemas indicalos.... pero primero ver si la función te es útil. Suerte!
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| |||
Perdón, no llego a entender dónde debo colocar el código para redimensionar, o por lo menos no logro que funcione, porque ni marca error pero tampoco cambia el tamaño de las imagenes. Te molesto de nuevo: Este es script "original" que tengo: <?php $extensiones=array("jpg","jpeg"); $dbuser="prueba"; //usuario de la base de datos $dbpass="prueba"; // password para la base if (isset($_FILES['archivo']['name'])){ // si estoy subiendo el archivo o es la primera carga de la pagina $path="imagenes/"; // path adonde la voy a guardar, en este caso mi_ubicacion_actual/imagenes $nombre=$_FILES['archivo']['name']; $tamanio=$_FILES['archivo']['size']; $tipo=$_FILES['archivo']['type']; $var = explode(".","$nombre"); $num = count($extensiones); $valor = $num-1; $admitido=false; for($i=0; $i<=$valor; $i++) { if($extensiones[$i] == $var[1]) { $admitido=true;//es una extension valida break; } } if ($admitido){ $link=mysql_connect("localhost",$dbuser,$dbpass); mysql_select_db("test"); $tamanio=round($tamanio/1024,0); //redondeo y paso a kb $sql="Insert Into pics (tipo,size,path,titulo,texto) values ('" .$tipo. "'," .$tamanio. ",'" .$path. "','$titulo','$texto')"; mysql_query($sql); $lastid=mysql_insert_id(); $path.=$lastid . "-" . $nombre; $sql="Update pics set path='" . $path . "' Where id=$lastid"; mysql_query($sql); if (is_uploaded_file($_FILES['archivo']['tmp_name'])) { copy($_FILES['archivo']['tmp_name'], "$path");?> <font color="#CCCCCC" size="2" face="Verdana, Arial, Helvetica, sans-serif">El archivo se ha subido correctamente al servidor.</font> <?php if (mysql_affected_rows($link)==0){?> <font color="#CCCCCC" size="2" face="Verdana, Arial, Helvetica, sans-serif">Ocurrio un error guardando en la base de datos. </font> <?php } } else { ?> <font color="#CCCCCC" size="2" face="Verdana, Arial, Helvetica, sans-serif">Error al subir el archivo.</font> <?php } }else{?> <font color="#CCCCCC" size="2" face="Verdana, Arial, Helvetica, sans-serif">Tipo de archivo no admitido, debe ser .jpg ó .jpeg</font> <?php } } ?> y éste el que debería agregar (lo pongo a continuación): |
| |||
<?php function redimencionar($file) { // Función que REEMPLAZA una imágen JPEG por otra con diferenetes dimenciones... // Se da por echo la imágen existe y es una imágen JPEG (no se hacen validaciones) $imagen = ImageCreateFromJPEG($file); unlink($file); // BORRAMOS el archivo original $width = imagesx($imagen); $height = imagesy($imagen); $nueva_anchura = 200; // Define aquí el ancho requerdo $nueva_altura = ($nueva_anchura * $height) / $width ;// Para un alto proporcinal (RECOMENDADO) ó ingresa directamente el alto requerido. if (function_exists("imagecreatetruecolor")) { $calidad = ImageCreateTrueColor($nueva_anchura, $nueva_altura); } else $calidad = ImageCreate($nueva_anchura, $nueva_altura); ImageCopyResized($calidad, $imagen, 0, 0, 0, 0, $nueva_anchura, $nueva_altura, $width, $height); ImageJPEG($calidad, $file, 100); imagedestroy($imagen); return true; // Forma de uso: // redimencionar(/ruta/archivo.jpg) } // Suponiendo se tiene <input type="file" name="imagen"> if (is_uploaded_file($_FILES['imagen']['tmp_name'])) { if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){ $nombre= "imagenes/".$_FILES['imagen']['name']; // Conserva su nombre original, se guarda en una carpeta imagenes if(move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre)) { if(redimencionar($nombre)) {// una vez definido el nombre del archivo no importa dónde se llame a la función echo "<img src=\"$nombre\">"; } else echo "La función redimencionar() tubo fallos<br>"; } else echo "<b>ERROR:</b><br> No se pudo mover el archivo<br>"; } else echo "<b>Tipo de archívo inválido</b><br>"; } else echo "Error al subir el archivo....<br>"; ?> Muchas gracias de nuevo |
| ||||
Cita:
Iniciado por jam1138 poner la función al inicio de tu código. Desde donde dice "function redimencionar($file) {" hasta antes de "// Suponiendo se tiene <input type="file" name="imagen">". Posteriormente agregas la llamada a la función pasándole la ruta que haz generado Código PHP: Saludos!
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |