hola mister , esta vez vengo con una pregunta mas comun que me ha surgido y pienso que es de mucho interes .. estaba subiendo las imagenes de un post a la web y resuta que a veces le cuesta un poco cargar las imagenes
mi pregunta es: podrias hacer un script o si hay alguna manera de aligerar el peso al subir las imagenes seria fantastico , gracias de nuevo mister un saludo !
Editado
mi pregunta es: podrias hacer un script o si hay alguna manera de aligerar el peso al subir las imagenes seria fantastico , gracias de nuevo mister un saludo !
Editado
0
Puntos
Puntos
6634
Visitas
Visitas
14
Resp
Resp
Por antoniodesign hace 7 años
Novice
Respuesta #1
buenas, vuelve a dejar el code que hemos tenido que restaurar la DB por temas del server, salu2
0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #2
hola Alber lo vi en este articulo: http://www.alvaropita.es/redimensionar-imagen-con-php-y-gd/
lo que quiero es aplicarlo en el formulario de editar.php que al subir una imagen se rebaje la resolucion de la imagen a una medida inferior sin distorsionarse y que la original se borre
aqui te dejo el codigo de admin/borrar.php por si es aqui
sino es aqui indicame donde hay que aplicarlo para que al subir la imagen se redimendimensione a medida ej: ( si es 1000x1000 que se haga 500x500 .. sin tener que ser una medida especifica nose si me explique bien ...
espero tu respuesta mister gracias de antemano salu2.
lo que quiero es aplicarlo en el formulario de editar.php que al subir una imagen se rebaje la resolucion de la imagen a una medida inferior sin distorsionarse y que la original se borre
aqui te dejo el codigo de admin/borrar.php por si es aqui
<?php require_once('../conexion.php');
$menu='admin';
//Validación de rango y valores
if(!isset($_SESSION['iduser']) || rango($_SESSION['iduser'])!=10 || !isset($_GET['idpost'])) header('Location:'.$dato[0]);
$idpost=$_GET['idpost'];
//Eliminar imagenes [imagen]
$accion_imagenes="SELECT imagen FROM z_posts WHERE id=$idpost";
$consulta_imagenes=mysqli_query($conexion,$accion_imagenes);
$datos_imagenes=mysqli_fetch_assoc($consulta_imagenes);
if($datos_imagenes['imagen']!=''){
$partesimg=explode('####', $datos_imagenes['imagen']);
$cantidadimg=count($partesimg);
for ($i=0; $i < $cantidadimg; $i++) {
//Poner la ruta donde se guardan las subidas
unlink('../img/upload/'.$partesimg[$i]);
}
}
mysqli_free_result($consulta_imagenes);
//BORRAR REGISTRO
$accion_nm = "DELETE FROM z_posts WHERE id=$idpost";
$consulta_nm = mysqli_query($conexion,$accion_nm) or die(mysqli_error());
header('Location:'.$dato[0].'admin/posts.php');
?>sino es aqui indicame donde hay que aplicarlo para que al subir la imagen se redimendimensione a medida ej: ( si es 1000x1000 que se haga 500x500 .. sin tener que ser una medida especifica nose si me explique bien ...
espero tu respuesta mister gracias de antemano salu2.
0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #3
aqui te dejo el script por si lo puedes implementar directamente
<?php
/*************************************
*
************************************/
//Ruta de la imagen original
$rutaImagenOriginal="./imagen/aprilia classic.jpg";
//Creamos una variable imagen a partir de la imagen original
$img_original = imagecreatefromjpeg($rutaImagenOriginal);
//Se define el maximo ancho o alto que tendra la imagen final
$max_ancho = 200;
$max_alto = 200;
//Ancho y alto de la imagen original
list($ancho,$alto)=getimagesize($rutaImagenOriginal);
//Se calcula ancho y alto de la imagen final
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;
//Si el ancho y el alto de la imagen no superan los maximos,
//ancho final y alto final son los que tiene actualmente
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) ){//Si ancho
$ancho_final = $ancho;
$alto_final = $alto;
}
/*
* si proporcion horizontal*alto mayor que el alto maximo,
* alto final es alto por la proporcion horizontal
* es decir, le quitamos al alto, la misma proporcion que
* le quitamos al alto
*
*/
elseif (($x_ratio * $alto) < $max_alto){
$alto_final = ceil($x_ratio * $alto);
$ancho_final = $max_ancho;
}
/*
* Igual que antes pero a la inversa
*/
else{
$ancho_final = ceil($y_ratio * $ancho);
$alto_final = $max_alto;
}
//Creamos una imagen en blanco de tamaño $ancho_final por $alto_final .
$tmp=imagecreatetruecolor($ancho_final,$alto_final);
//Copiamos $img_original sobre la imagen que acabamos de crear en blanco ($tmp)
imagecopyresampled($tmp,$img_original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
//Se destruye variable $img_original para liberar memoria
imagedestroy($img_original);
//Definimos la calidad de la imagen final
$calidad=95;
//Se crea la imagen final en el directorio indicado
imagejpeg($tmp,"./imagen/retoque.jpg",$calidad);
/* SI QUEREMOS MOSTRAR LA IMAGEN EN EL NAVEGADOR
*
* descomentamos las lineas 64 ( Header("Content-type: image/jpeg"); ) y 65 ( imagejpeg($tmp); )
* y comentamos la linea 57 ( imagejpeg($tmp,"./imagen/retoque.jpg",$calidad); )
*/
//Header("Content-type: image/jpeg");
//imagejpeg($tmp);
?>0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #4
hola la optimización tenemos que hacerla al subir las imágenes en el fichero fotos.php (si no recuerdo mal), investiga un poco y me dejas por aquí el code para implementarlo
salu2
salu2
0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #5
es el inc/editpage.php si no me equivoco aqui dejo el codigo:
<?php require_once('../conexion.php');
//Validar formulario
if(!isset($_POST['titulo']) || $_POST['titulo']=='' || $_POST['mensaje']=='') exit;
//Validación tipo imagen
if (isset($_FILES['imagen']['name']) && $_FILES['imagen']['name']!=''){
$nombre='';
$contarimagenes=count($_FILES['imagen']['name']);
for ($i=0; $i < $contarimagenes; $i++) {
//Validar tipo imagen
if($_FILES['imagen']['type'][$i]=='image/gif' || $_FILES['imagen']['type'][$i]=='image/jpg' || $_FILES['imagen']['type'][$i]=='image/jpeg' || $_FILES['imagen']['type'][$i]=='image/png'){
$nombre.=time().'_'.$_FILES['imagen']['name'][$i].'####';
$nombreupload=time().'_'.$_FILES['imagen']['name'][$i];
move_uploaded_file($_FILES['imagen']['tmp_name'][$i], '../img/upload/'.$nombreupload);
}
}
$nombre=substr($nombre,0,-4);
} else $nombre='';
//Actualizar el post
//$_SESSION['imagenes']
$accion_editar = sprintf("UPDATE z_paginas SET titulo=%s, precio=%s, kilometraje=%s, matriculacion=%s, potencia=%s, combustible=%s, cambio=%s, descripcion=%s,imagen=%s WHERE pagina=%s",
formatearcadena($_POST['titulo'],'text'),
formatearcadena($_POST['precio'], "text"),
formatearcadena($_POST['kilometraje'], "text"),
formatearcadena($_POST['matriculacion'], "text"),
formatearcadena($_POST['potencia'], "text"),
formatearcadena($_POST['combustible'], "text"),
formatearcadena($_POST['cambio'], "text"),
formatearcadena(trim($_POST['mensaje']),'text'),
formatearcadena($_SESSION['imagenes'],'text'),
formatearcadena($_POST['pagina'],'text'));
$consulta_editar = mysqli_query($conexion,$accion_editar) or die(mysqli_error());
echo $dato[0].$_POST['pagina'];
?>0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #6
o el inc/addpost.php no se cual podria ser aqui lo dejo entero:
<?php require_once('../conexion.php');
//Validar formulario
if(!isset($_POST['titulo']) || $_POST['titulo']=='' || $_POST['precio']=='' || $_POST['kilometraje']=='' || $_POST['matriculacion']=='' || $_POST['potencia']=='' || $_POST['combustible']=='' || $_POST['cambio']=='' || $_POST['categoria']=='' || $_POST['mensaje']=='') exit;
//Validación tipo imagen
if (isset($_FILES['imagen']['name']) && $_FILES['imagen']['name']!=''){
$nombre='';
$contarimagenes=count($_FILES['imagen']['name']);
for ($i=0; $i < $contarimagenes; $i++) {
//Validar tipo imagen
if($_FILES['imagen']['type'][$i]=='image/gif' || $_FILES['imagen']['type'][$i]=='image/jpg' || $_FILES['imagen']['type'][$i]=='image/jpeg' || $_FILES['imagen']['type'][$i]=='image/png'){
$nombre.=time().'_'.$_FILES['imagen']['name'][$i].'####';
$nombreupload=time().'_'.$_FILES['imagen']['name'][$i];
move_uploaded_file($_FILES['imagen']['tmp_name'][$i], '../img/upload/'.$nombreupload);
}
}
$nombre=substr($nombre,0,-4);
} else $nombre='';
if(!isset($_POST['idpost'])){
//Insertar post
$accion_adduser = sprintf("INSERT INTO z_posts (titulo, precio, kilometraje, matriculacion, potencia, combustible, cambio, categoria, mensaje, imagen, autor, seo) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
formatearcadena($_POST['titulo'],'text'),
formatearcadena($_POST['precio'], "text"),
formatearcadena($_POST['kilometraje'], "text"),
formatearcadena($_POST['matriculacion'], "text"),
formatearcadena($_POST['potencia'], "text"),
formatearcadena($_POST['combustible'], "text"),
formatearcadena($_POST['cambio'], "text"),
formatearcadena($_POST['categoria'],'int'),
formatearcadena(trim($_POST['mensaje']),'text'),
formatearcadena($_SESSION['imagenes'],'text'),
formatearcadena($_SESSION['iduser'],'int'),
formatearcadena(urls_amigables($_POST['titulo']),'text'));
$consulta_adduser = mysqli_query($conexion,$accion_adduser) or die(mysqli_error());
$idpost=mysqli_insert_id($conexion);
} else {
//Actualizar el post
//$_SESSION['imagenes']
$accion_editar = sprintf("UPDATE z_posts SET titulo=%s, precio=%s, kilometraje=%s, matriculacion=%s, potencia=%s, combustible=%s, cambio=%s, categoria=%s, mensaje=%s, imagen=%s, seo=%s WHERE id=%s",
formatearcadena($_POST['titulo'],'text'),
formatearcadena($_POST['precio'], "text"),
formatearcadena($_POST['kilometraje'], "text"),
formatearcadena($_POST['matriculacion'], "text"),
formatearcadena($_POST['potencia'], "text"),
formatearcadena($_POST['combustible'], "text"),
formatearcadena($_POST['cambio'], "text"),
formatearcadena($_POST['categoria'],'int'),
formatearcadena(trim($_POST['mensaje']),'text'),
formatearcadena($_SESSION['imagenes'],'text'),
formatearcadena(urls_amigables($_POST['titulo']),'text'),
formatearcadena($_POST['idpost'],'int'));
$consulta_editar = mysqli_query($conexion,$accion_editar) or die(mysqli_error());
$idpost=$_POST['idpost'];
}
//ACTUALIZAR REGISTRO
$accion_seo = sprintf("UPDATE z_posts SET seo=%s WHERE id=$idpost",
formatearcadena($idpost.'-'.urls_amigables($_POST['titulo']),'text'));
$consulta_seo = mysqli_query($conexion,$accion_seo) or die(mysqli_error());
echo $dato[0].'post/'.$idpost.'-'.urls_amigables($_POST['titulo']);
?>0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #7
espero tu respuesta mister salu2
0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #8
eh publicado un ejemplo mas completo y con explicaciones para que puedas implementarlo super fácil https://phpres.net/php-poo/como-redimensionar-o-reducir-peso-de-imagenes-con-php
0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #9
en el fichero inc/editpage.php cambia esto:
move_uploaded_file($_FILES['imagen']['tmp_name'][$i], '../img/upload/'.$nombreupload);por esto:
//Parámetros optimización, resolución máxima permitida
$max_ancho = 1280;
$max_alto = 900;
$medidasimagen= getimagesize($_FILES['imagen']['tmp_name'][$i]);
//Si las imagenes tienen una resolución y un peso aceptable se suben tal cual
if($medidasimagen[0] < 1280 && $_FILES['imagen']['size'][$i] < 100000){
move_uploaded_file($_FILES['imagen']['tmp_name'][$i], '../img/upload/'.$nombreupload);
} else {
$nombrearchivo=$nombreupload;
//Redimensionar
$rtOriginal=$_FILES['imagen']['tmp_name'][$i];
if($_FILES['imagen']['type'][$i]=='image/jpeg'){
$original = imagecreatefromjpeg($rtOriginal);
}
else if($_FILES['imagen']['type'][$i]=='image/png'){
$original = imagecreatefrompng($rtOriginal);
}
else if($_FILES['imagen']['type'][$i]=='image/gif'){
$original = imagecreatefromgif($rtOriginal);
}
list($ancho,$alto)=getimagesize($rtOriginal);
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) ){
$ancho_final = $ancho;
$alto_final = $alto;
}
elseif (($x_ratio * $alto) < $max_alto){
$alto_final = ceil($x_ratio * $alto);
$ancho_final = $max_ancho;
}
else{
$ancho_final = ceil($y_ratio * $ancho);
$alto_final = $max_alto;
}
$lienzo=imagecreatetruecolor($ancho_final,$alto_final);
imagecopyresampled($lienzo,$original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
//imagedestroy($original);
$cal=8;
if($_FILES['imagen']['type'][$i]=='image/jpeg'){
imagejpeg($lienzo,"../img/upload/".$nombrearchivo);
}
else if($_FILES['imagen']['type'][$i]=='image/png'){
imagepng($lienzo,"../img/upload/".$nombrearchivo);
}
else if($_FILES['imagen']['type'][$i]=='image/gif'){
imagegif($lienzo,"../img/upload/".$nombrearchivo);
}
}prueba y nos cuentas0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #10
obviamente para probar el código de arriba tienes que editar un post ya creado para que se ejecute, cuando lo confirmes te preparo el del otro fichero pero vamos, la idea es echarnos una mano no hacernos el trabajo "íntegro" xd
salu2
salu2
0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #11
hola ya tienes aquí el ejemplo solo falta que me cuentes si te funciona para hacerte el otro cacho ;)
0
Puntos
Puntos
Por alber hace 7 años
Admin
Respuesta #12
hola alber , hice lo que me has dicho y funciona pero no me cambia el tamaño .. será que es el otro archivo inc/tiemporeal.php es similar a este .. aqui el codigo:
<?php require_once('../conexion.php');
if (isset($_FILES['imagenupload']['name']) && $_FILES['imagenupload']['name']!=''){
$nombre='';
$contarimagenes=count($_FILES['imagenupload']['name']);
for ($i=0; $i < $contarimagenes; $i++) {
//Validar tipo imagen
if($_FILES['imagenupload']['type'][$i]=='image/gif' || $_FILES['imagenupload']['type'][$i]=='image/jpg' || $_FILES['imagenupload']['type'][$i]=='image/jpeg' || $_FILES['imagenupload']['type'][$i]=='image/png'){
$nombre.=time().'_'.$_FILES['imagenupload']['name'][$i].'####';
$nombreupload=time().'_'.$_FILES['imagenupload']['name'][$i];
move_uploaded_file($_FILES['imagenupload']['tmp_name'][$i], '../img/upload/'.$nombreupload);
}
}
$nombre=substr($nombre,0,-4);
if($_SESSION['imagenes']!='') $_SESSION['imagenes'].='####'.$nombre; else $_SESSION['imagenes'].=$nombre;
$imagenes=$nombre;
$partes=explode('####',$imagenes);
$cantidad=count($partes);
}
?>
<?php if($imagenes!=''){ ?>
<?php for ($i=0; $i < $cantidad; $i++) { ?>
<div class="relativo" id="elemento<?php echo $i.'bucle2'; ?>">
<img style="width: 100px; height: auto" src="<?php echo $dato[0] ?>img/upload/<?php echo $partes[$i]; ?>" alt="">
<span onclick="eliminar_imagen('<?php echo $i.'bucle2'; ?>','<?php echo $partes[$i]; ?>');">×</span>
</div>
<?php } ?>
<?php } ?>0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #13
está funcionando pero el tamaño de las imagenes sigue igual , si podrias hablar con zeus el lo sabria seguro por ser su web .. me urge mucho porque todo va de maravilla menos las imagenes que cargan muy lento .. quedo atento a tus respuestas gracias maestro !
0
Puntos
Puntos
Por antoniodesign hace 7 años
Novice
Respuesta #14
claro el tema es que en tu web tienes muchos ficheros que suben imagenes y tendrías que meter la función en todos, envía un correo a info@phpres.net que te den presupuesto de hacerlo todo por ti
salu2
salu2
0
Puntos
Puntos
Por alber hace 7 años
Admin