Comunidad de diseño web y desarrollo en internet online

Escalar imagen por php

Citar            
MensajeEscrito el 21 Ago 2007 10:20 am
Hola, estoy haciendo una web en flash y necesito saber como podria hacer para que de una imagen, se subiera al servidor 4, es decir, una copia exacta, y las otras tres escaladas a x tamaño. Gracias

Por Cubel

Claber

139 de clabLevel



Genero:Masculino  

Valencia, España

msie
Citar            
MensajeEscrito el 21 Ago 2007 11:04 am

Código :

<?php

function imageResize($width, $height, $target) {

//takes the larger size of the width and height and applies the  
formula accordingly...this is so this script will work  
dynamically with any size image

if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}

//gets the new value and applies the percentage, then rounds the value
$width = round($width * $percentage);
$height = round($height * $percentage);

//returns the new sizes in html image tag format...this is so you
can plug this function inside an image tag and just get the

return "width=\"$width\" height=\"$height\"";

}

?>
//Then in the HTML:
<?php

//get the image size of the picture and load it into an array
$mysock = getimagesize("images/sock001.jpg");

?>

<!-using a standard html image tag, where you would have the  
width and height, insert your new imageResize() function with  
the correct attributes -->

<img src="images/sock001.jpg" <?php imageResize($mysock[0],  
$mysock[1], 150); ?>>


fuente:
http://www.sitepoint.com/article/image-resizing-php

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 22 Ago 2007 08:56 am
Gracias Sisco!!

Por Cubel

Claber

139 de clabLevel



Genero:Masculino  

Valencia, España

firefox
Citar            
MensajeEscrito el 07 Dic 2008 04:54 pm

Código :

<?php

function imageResize($width, $height, $target) {

//takes the larger size of the width and height and applies the  
formula accordingly...this is so this script will work  
dynamically with any size image
if ($width >= $target and $height >= $target){
if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}
} else {
$percentage = 1;
}

//gets the new value and applies the percentage, then rounds the value
$width = round($width * $percentage);
$height = round($height * $percentage);

//returns the new sizes in html image tag format...this is so you
can plug this function inside an image tag and just get the

return "width=\"$width\" height=\"$height\"";

}

?>
//Then in the HTML:
<?php

//get the image size of the picture and load it into an array
$mysock = getimagesize("images/sock001.jpg");

?>

<!-using a standard html image tag, where you would have the  
width and height, insert your new imageResize() function with  
the correct attributes -->

<img src="images/sock001.jpg" <?php echo imageResize($mysock[0],  
$mysock[1], 150); ?>>


Probé el código es muy bueno sólo faltaba escribir los atributos al imprimir la página y era tan sólo colocar un ECHO antes de llamar a la función, probablemente todos se dieron cuenta ^^, además le hice una pequeña variación por si las dimensiones de la imagen (alto y ancho) son menores que el $target, así hacemos que mantengan su tamaño original :)

Por didjeram

116 de clabLevel

1 tutorial

Genero:Masculino  

RC Data Center

firefox
Citar            
MensajeEscrito el 07 Nov 2010 08:57 am
Se que este tema es viejo, pero aparece indexado en google, y por tanto cuando algunos buscamos info al respecto, rankea bastante bien.

He usado esta fórmula unas cuantas veces, hasta que me he dado cuenta que tiene una falla (o a lo mejor yo la fallo de algun modo).

He seteado los tamaños máximos para el thumb en 266*183
Es decir, si la imágen es mayor, que escale proporcional, manteniendo como máximos esos parámetros.

Todo funcionaba bien hasta que encuentro una imágen de 1000px * 750px... La fórmula que yo utilizaba, si bien no es esta misma es similar y sigue la misma lógica... Al escalar esa imagen en particular, me ponía el ancho a 266 y el alto a 200 ¬¬

Por tanto no cumplia su funcion...
Esta es la fórmula completa que estaba utilizando:

Código PHP :

$nuevo_ancho = 266;
$nuevo_alto = 183;
if($ancho >= $nuevo_ancho || $alto >= $nuevo_alto){
   if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho)){
      $nuevo_ancho = round($ancho * $nuevo_alto / $alto) ;
   }else{
      $nuevo_alto = round($alto * $nuevo_ancho / $ancho);
   }
}else{ 
   $nuevo_alto = $alto;
   $nuevo_ancho = $ancho;
}


Con esa imágen en particular, y solo con esa me paso que escalaba MAL...

Por tanto le puse manos a la obra, y decidí culminar por esta que hasta ahora me ha funcionado con todos los tamaños que le pase:

Código PHP :

$nuevo_ancho = 266;
$nuevo_alto = 183;
if($alto >= $nuevo_alto || $ancho >= $nuevo_ancho){
   
   $percentAlto = $nuevo_alto/$alto;
   $percentAncho = $nuevo_ancho/$ancho;
   $escala = min($percentAlto, $percentAncho);
   $nuevo_alto = $alto * $escala;
   $nuevo_ancho = $ancho * $escala;

}else{
   $nuevo_alto = $alto;
   $nuevo_ancho = $ancho;
}


Espero que pueda servir a alguien; aún no entiendo bien porque fallaba la anterior con ese tamaño en particular, pero tampoco soy un matemático, y era más facil plantearme hacerla de nuevo que ponerme a hacer calculos para encontrar la falla xD

Solo aclarar que $alto y $ancho los recibo con getimagesize.

Saludos

Por rusoftware

46 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.