Discussion:
HTML: Ancho de imagen x proporción?
(demasiado antiguo para responder)
: : Ale Photoshop : :
2007-11-01 00:49:11 UTC
Permalink
Una huevadita facil para un jueves:
Queria Saber como escribir en HTML(o en php o lo que sea) que una imagen
tenga de alto el proporcional al ancho que yo le defino... ¿se entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra 400x400,
quiero decirle en html que de ancho tengan todas 300 x la proporción (para
no deformar la imagen...)

Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P

Ale Photoshop
YaC
2007-11-01 09:57:23 UTC
Permalink
Igual digo una tontería pero yo diría que si únicamnete le metes el
width=300 y no pones height, te lo proporciona.

YaC
Post by : : Ale Photoshop : :
Queria Saber como escribir en HTML(o en php o lo que sea) que una imagen
tenga de alto el proporcional al ancho que yo le defino... ¿se entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra 400x400,
quiero decirle en html que de ancho tengan todas 300 x la proporción (para
no deformar la imagen...)
Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P
Ale Photoshop
BIGOTE
2007-11-01 15:37:18 UTC
Permalink
Yo lo trabajo con PHP. Fijate si te sirve.

Por ejemplo:
$ancho = 300; //el ancho que vos querés.
$alto = 600; //el alto máximo que voy a permitir
$porc = 0; //variable para el porcentaje
$wn=0; //variable para el ancho proporcional
$hn=0; //variable para el alto proporcional
list($wo, $ho) = getimagesize($foto); // aquí guardas el width y el
height de la foto original ($wo y $ho)

//una vez que tengo todas las variables, hago el ajuste
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada porque la imagen está dentro de los valores
}elseif($wo > $ho){
$porc = ($ancho/$wo)*100;
}elseif($ho > $wo){
$porc = ($alto/$ho)*100;
}
//si el porcentaje es mayor a 0, es porque tengo que reducir la imagen
if($porc > 0){
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}

// Aplico $wn y $hn a la imagen y listo.
Post by : : Ale Photoshop : :
Queria Saber como escribir en HTML(o en php o lo que sea) que una imagen
tenga de alto el proporcional al ancho que yo le defino... ¿se entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra 400x400,
quiero decirle en html que de ancho tengan todas 300 x la proporción (para
no deformar la imagen...)
Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P
Ale Photoshop
: : Ale Photoshop : :
2007-11-01 15:46:22 UTC
Permalink
Gracias bigote... voy a implementarlo...
una duda,
getimagesize($foto); esto me redimensiona la imagen guardandomela mas chica
(quitandole pixeles verdaderos a la imagen)o a una imagen grande solo la
muestra mas chica manteniendo el mismo peso¿me explico?
Post by BIGOTE
Yo lo trabajo con PHP. Fijate si te sirve.
$ancho = 300; //el ancho que vos querés.
$alto = 600; //el alto máximo que voy a permitir
$porc = 0; //variable para el porcentaje
$wn=0; //variable para el ancho proporcional
$hn=0; //variable para el alto proporcional
list($wo, $ho) = getimagesize($foto); // aquí guardas el width y el
height de la foto original ($wo y $ho)
//una vez que tengo todas las variables, hago el ajuste
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada porque la imagen está dentro de los valores
}elseif($wo > $ho){
$porc = ($ancho/$wo)*100;
}elseif($ho > $wo){
$porc = ($alto/$ho)*100;
}
//si el porcentaje es mayor a 0, es porque tengo que reducir la imagen
if($porc > 0){
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
// Aplico $wn y $hn a la imagen y listo.
Post by : : Ale Photoshop : :
Queria Saber como escribir en HTML(o en php o lo que sea) que una imagen
tenga de alto el proporcional al ancho que yo le defino... ¿se entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra 400x400,
quiero decirle en html que de ancho tengan todas 300 x la proporción
(para no deformar la imagen...)
Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P
Ale Photoshop
BIGOTE
2007-11-01 15:59:46 UTC
Permalink
No, getimagesize te devuelve un array con el ancho y alto que se almacena en
$wo y $ho

Yo usé list, pero también es válido esto:

$tamano_imagen = getimagesize($foto);
$wo = $tamano_image[0];
$ho = $tamano_image[1];

Luego de aplicar los porcentajes, vas a obtener un nuevo ancho y un nuevo
alto ($wn y $hn). Con esos valores podés hacer lo que quieras, es decir,
encojer la imagen o redimensionarla, pero para hacer esto último tenés que
usar otras funciones, aunque me pareció entender que querías encojerla.
Post by : : Ale Photoshop : :
Gracias bigote... voy a implementarlo...
una duda,
getimagesize($foto); esto me redimensiona la imagen guardandomela mas
chica (quitandole pixeles verdaderos a la imagen)o a una imagen grande
solo la muestra mas chica manteniendo el mismo peso¿me explico?
Post by BIGOTE
Yo lo trabajo con PHP. Fijate si te sirve.
$ancho = 300; //el ancho que vos querés.
$alto = 600; //el alto máximo que voy a permitir
$porc = 0; //variable para el porcentaje
$wn=0; //variable para el ancho proporcional
$hn=0; //variable para el alto proporcional
list($wo, $ho) = getimagesize($foto); // aquí guardas el width y el
height de la foto original ($wo y $ho)
//una vez que tengo todas las variables, hago el ajuste
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada porque la imagen está dentro de los valores
}elseif($wo > $ho){
$porc = ($ancho/$wo)*100;
}elseif($ho > $wo){
$porc = ($alto/$ho)*100;
}
//si el porcentaje es mayor a 0, es porque tengo que reducir la imagen
if($porc > 0){
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
// Aplico $wn y $hn a la imagen y listo.
Post by : : Ale Photoshop : :
Queria Saber como escribir en HTML(o en php o lo que sea) que una imagen
tenga de alto el proporcional al ancho que yo le defino... ¿se entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra 400x400,
quiero decirle en html que de ancho tengan todas 300 x la proporción
(para no deformar la imagen...)
Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P
Ale Photoshop
: : Ale Photoshop : :
2007-11-01 22:53:13 UTC
Permalink
No, en realida dla idea es que se adapte a un ancho determinado.
La idea e sque la gente suba su foto. Pero siempre hay algun zarpado que
manda a subir una imagen de 7 megapixeles o de 1600x1200... La idea seria
que se ajuste a un ancho determinado por el alto proporcional.
Pero ahora, hay posibilidades de hacer una edicion de la imagen? es decir
que se achique pero que se guarde achicada... con su menor peso en kb ¿me
explico?
Post by BIGOTE
No, getimagesize te devuelve un array con el ancho y alto que se almacena
en $wo y $ho
$tamano_imagen = getimagesize($foto);
$wo = $tamano_image[0];
$ho = $tamano_image[1];
Luego de aplicar los porcentajes, vas a obtener un nuevo ancho y un nuevo
alto ($wn y $hn). Con esos valores podés hacer lo que quieras, es decir,
encojer la imagen o redimensionarla, pero para hacer esto último tenés que
usar otras funciones, aunque me pareció entender que querías encojerla.
Post by : : Ale Photoshop : :
Gracias bigote... voy a implementarlo...
una duda,
getimagesize($foto); esto me redimensiona la imagen guardandomela mas
chica (quitandole pixeles verdaderos a la imagen)o a una imagen grande
solo la muestra mas chica manteniendo el mismo peso¿me explico?
Post by BIGOTE
Yo lo trabajo con PHP. Fijate si te sirve.
$ancho = 300; //el ancho que vos querés.
$alto = 600; //el alto máximo que voy a permitir
$porc = 0; //variable para el porcentaje
$wn=0; //variable para el ancho proporcional
$hn=0; //variable para el alto proporcional
list($wo, $ho) = getimagesize($foto); // aquí guardas el width y el
height de la foto original ($wo y $ho)
//una vez que tengo todas las variables, hago el ajuste
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada porque la imagen está dentro de los valores
}elseif($wo > $ho){
$porc = ($ancho/$wo)*100;
}elseif($ho > $wo){
$porc = ($alto/$ho)*100;
}
//si el porcentaje es mayor a 0, es porque tengo que reducir la imagen
if($porc > 0){
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
// Aplico $wn y $hn a la imagen y listo.
Post by : : Ale Photoshop : :
Queria Saber como escribir en HTML(o en php o lo que sea) que una
imagen tenga de alto el proporcional al ancho que yo le defino... ¿se
entiende?
Por ejemplo...
si tengo imagenes de 800ancho x 600alto, otra de 900x300 y otra
400x400, quiero decirle en html que de ancho tengan todas 300 x la
proporción (para no deformar la imagen...)
Espero que alguien tenga un minutin para responderme,
desde ya, se los agradezco proporcionalmente ;-P
Ale Photoshop
BIGOTE
2007-11-02 01:28:52 UTC
Permalink
Sí, con PHP podés manejar las imágenes como quieras. Te paso un ejemplo
básico para subir una imagen al servidor y que te quede reducida a un ancho
de 300 px.

Copia lo siguiente en un documento php (OJO. Previamente crea un directorio
llamado fotos en el que se pueda escribir, es decir con atributo: 777)

<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro de un
ancho predeterminado.*/

if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;

$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}

if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj para
evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una imagen
en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
: : Ale Photoshop : :
2007-11-02 02:37:15 UTC
Permalink
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana para
personalizarlmelo porque de tantas $variables se me complica con mi PHP de
aprendiz... jejeje

Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un ejemplo
básico para subir una imagen al servidor y que te quede reducida a un
ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro de
un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj para
evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
BIGOTE
2007-11-02 12:42:32 UTC
Permalink
Si, al verlo así todo junto puede que asuste, pero vas a ver que es una
pavada.

Las variables están mas que nada para facilitar y aclarar las cosas, en lo
que tenés que fijarte es en las funciones.

Avisame como te fue.
Post by : : Ale Photoshop : :
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana para
personalizarlmelo porque de tantas $variables se me complica con mi PHP de
aprendiz... jejeje
Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un ejemplo
básico para subir una imagen al servidor y que te quede reducida a un
ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro de
un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj para
evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
: : Ale Photoshop : :
2007-11-02 22:47:08 UTC
Permalink
ok... lo hice andar perfectamente... mas que nada me gustó como maneja la
funcion time() par aque no se repitan las imagenes... sseguramente son cosas
obvias, pero al no estar continuamente con esto, a mi me pareció re
novedoso!!! jejeje... gracias...
Post by BIGOTE
Si, al verlo así todo junto puede que asuste, pero vas a ver que es una
pavada.
Las variables están mas que nada para facilitar y aclarar las cosas, en lo
que tenés que fijarte es en las funciones.
Avisame como te fue.
Post by : : Ale Photoshop : :
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana
para personalizarlmelo porque de tantas $variables se me complica con mi
PHP de aprendiz... jejeje
Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un ejemplo
básico para subir una imagen al servidor y que te quede reducida a un
ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro de
un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj para
evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php echo
$wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
BIGOTE
2007-11-03 03:51:12 UTC
Permalink
Están muy piolas las funciones de imágenes. Incluso podés agregar texto
sobre una imagen o superponer otra como marca de agua, todo por código.
Post by : : Ale Photoshop : :
ok... lo hice andar perfectamente... mas que nada me gustó como maneja la
funcion time() par aque no se repitan las imagenes... sseguramente son
cosas obvias, pero al no estar continuamente con esto, a mi me pareció re
novedoso!!! jejeje... gracias...
Post by BIGOTE
Si, al verlo así todo junto puede que asuste, pero vas a ver que es una
pavada.
Las variables están mas que nada para facilitar y aclarar las cosas, en
lo que tenés que fijarte es en las funciones.
Avisame como te fue.
Post by : : Ale Photoshop : :
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana
para personalizarlmelo porque de tantas $variables se me complica con mi
PHP de aprendiz... jejeje
Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un ejemplo
básico para subir una imagen al servidor y que te quede reducida a un
ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro
de un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj
para evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
: : Ale Photoshop : :
2007-11-03 18:06:57 UTC
Permalink
tenes en mente algun sitio donde haya algunos tutoriales sobre eso o solo se
puede aprender con algun curcito?
Post by BIGOTE
Están muy piolas las funciones de imágenes. Incluso podés agregar texto
sobre una imagen o superponer otra como marca de agua, todo por código.
Post by : : Ale Photoshop : :
ok... lo hice andar perfectamente... mas que nada me gustó como maneja la
funcion time() par aque no se repitan las imagenes... sseguramente son
cosas obvias, pero al no estar continuamente con esto, a mi me pareció re
novedoso!!! jejeje... gracias...
Post by BIGOTE
Si, al verlo así todo junto puede que asuste, pero vas a ver que es una
pavada.
Las variables están mas que nada para facilitar y aclarar las cosas, en
lo que tenés que fijarte es en las funciones.
Avisame como te fue.
Post by : : Ale Photoshop : :
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana
para personalizarlmelo porque de tantas $variables se me complica con
mi PHP de aprendiz... jejeje
Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un
ejemplo básico para subir una imagen al servidor y que te quede
reducida a un ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro
de un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj
para evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a la
imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre otra,
suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
BIGOTE
2007-11-03 19:51:26 UTC
Permalink
Yo conocí esta función a través del libro "Flash, PHP y MySQL Contenidos
dinámicos" de Kadazurdo y Granatta, después empecé a buscar las funciones
que me interesaban, en http://es.php.net/manual/es/ref.image.php y si no me
quedaba muy claro, buscaba ejemplos en Google con el nombre de esa función.

No puedo recomendarte un sitio en especial porque hay muchos, pero en las
búsquedas seguramente te vas a topar con los más conocidos (webexperto,
desarrolloweb, webtaller, etc.).
Post by : : Ale Photoshop : :
tenes en mente algun sitio donde haya algunos tutoriales sobre eso o solo
se puede aprender con algun curcito?
Post by BIGOTE
Están muy piolas las funciones de imágenes. Incluso podés agregar texto
sobre una imagen o superponer otra como marca de agua, todo por código.
Post by : : Ale Photoshop : :
ok... lo hice andar perfectamente... mas que nada me gustó como maneja
la funcion time() par aque no se repitan las imagenes... sseguramente
son cosas obvias, pero al no estar continuamente con esto, a mi me
pareció re novedoso!!! jejeje... gracias...
Post by BIGOTE
Si, al verlo así todo junto puede que asuste, pero vas a ver que es una
pavada.
Las variables están mas que nada para facilitar y aclarar las cosas, en
lo que tenés que fijarte es en las funciones.
Avisame como te fue.
Post by : : Ale Photoshop : :
muy bueno bigotee!!
es lo que buscaba... pero le voy a tener que dedica reste findesemana
para personalizarlmelo porque de tantas $variables se me complica con
mi PHP de aprendiz... jejeje
Muchas gracias de todas formas!!!
cuando lo ponga en funcionamiento te chiflo...
Post by BIGOTE
Sí, con PHP podés manejar las imágenes como quieras. Te paso un
ejemplo básico para subir una imagen al servidor y que te quede
reducida a un ancho de 300 px.
Copia lo siguiente en un documento php (OJO. Previamente crea un
directorio llamado fotos en el que se pueda escribir, es decir con
atributo: 777)
<?php
/* SUBIR UNA FOTO AL SERVIDOR controlando previamente que esté dentro
de un ancho predeterminado.*/
if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
$directorioDestino="fotos/";
$ancho = 300;
$calidad_JPG = 80;
$wn=0; $hn=0; $porc=0;
$foto_tmp = $_FILES['foto']['tmp_name'];
$tam = getimagesize($foto_tmp);
$wo = $tam[0]; $ho = $tam[1];
if($wo <= $ancho AND $ho <= $alto){
//no hacer nada
}else{
$porc = ($ancho/$wo)*100;
}
if($porc > 0){
//si hay un porcentaje, calculo el nuevo ancho y alto
$wn = floor($wo*($porc/100));
$hn = floor($ho*($porc/100));
}else{
$wn = $wo;
$hn = $ho;
}
$foto_nva = time().".jpg"; //creo un nombre válido, usando el reloj
para evitar que se repitan nombres
//lo que sigue devuelve un identificador de imagen que representa a
la imagen obtenida a partir del nombre de archivo indicado
$img_vieja = imagecreatefromjpeg($foto_tmp);
//lo que sigue devuelve un identificador de imagen representando una
imagen en blanco de tamaño anchura por altura
$img_nueva = imagecreatetruecolor($wn, $hn);
//lo que sigue copia una porción rectangular de una imagen sobre
otra, suavizando los valores de los píxeles mediante interpolación
imagecopyresampled($img_nueva,$img_vieja,0,0,0,0,$wn,$hn,$wo,$ho);
//borramos la imagen temporal
imagedestroy($img_vieja);
imagejpeg($img_nueva,$directorioDestino.$foto_nva,$calidad_JPG);
imagedestroy($img_nueva);
}
?>
<form enctype="multipart/form-data" method="post" action="">
<input name="foto" type="file">
<input name="btn_subir" type="submit" id="btn_subir" value="Subir
imagen">
</form>
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wo; ?>" height="<?php echo $ho; ?>">
<img src="<?php echo $directorioDestino.$foto_nva; ?>" width="<?php
echo $wn; ?>" height="<?php echo $hn; ?>"><br>
<?php echo "original: ".$wo." x ".$ho. " | "; ?>
<?php echo "nuevo tamaño: ".$wn." x ".$hn; ?>
Loading...