2006-09-30

Xampp: Php y Mysql entre otros




A veces pasa que necesitas un entorno para probar y depurar tus aplicaciones web sin tener que acceder al servidor que normalmente utilices.

Para estos casos existen en el mercado varias aplicaciones que te permiten probar estas aplicaciones en tu ordenador sin necesidad de conexiones externas.

Xampp es una de estas aplicaciones.

Las características principales son:
  • Apache 2.2.3

  • MySQL 5.0.24a

  • PHP 5.1.6 & PHP 4.4.4

  • phpMyAdmin 2.8.2.4

  • FileZilla FTP Server 0.9.18

  • OpenSSL 0.9.8c



Y tiene múltitud de addons que puedes instalar aparte.

En mi caso, lo instalé en mi residencia veraniega. Alejado de internet sentía cierta necesidad de conexión. Y en un ordenador antiguo ( pentiumIII 500 Mghz) funciona rápido.

2006-09-14

Redimensionar imagenes con php - GD

Últimamente estoy haciendo mis primeros pinitos con php. Y como todo el mu7ndo comienzo buscando trozos de código que me puedan servir y así poco a poco ir montando mis propios códigos.

Lo que necesitaba en este caso era un código que introdujera una imagen en una carpeta del servidor y al mismo tiempo fabricara el thumbnail.

Estuve buscando por ahí y después de varios intentos encontré este código para redimensionar en forosdelweb.

Casi a la primera el código funcionaba. Pero hubo una cosa que no me gustó.
Normalmente cuando se hace un thumbnail se elige un cuadrado de tanto por tanto. De forma que cuando insertas una imagen que es más grande en su horizontal que en su vertical, el thumbnail toma el valor máximo de ese cuadrado como anchura.

Ejemplo:

si queremos un cuadrado de 120x120 pixeles para que no se nos desmaquete la web

imagen: 2200x1450---> thumbnail 120x79

imagen: 800x1600----> thumbnail 60x120

Total que programé un par de líneas más leyendo los datos de la anchura y la altura del archivo origen y redimensionando en su caso adecuadamente.

También tuve que manejar los ficheros y colocarlos en sus respectivas carpetas y darle los permisos adecuados.

Aquí os pongo el código:


function redimensionar($type, $img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
$defecto = 'img/defecto.jpg';
if(file_exists($img_original)) {
// crear imagen desde original
$type=strtolower($type);
switch($type)
{
case 'jpeg': $img = ImageCreateFromJPEG($img_original); break;
case 'jpg': $img = ImageCreateFromJPEG($img_original); break;
case 'png': $img = ImageCreateFromPNG($img_original); breaK;
case 'gif': $img = ImageCreateFromGIF($img_original); breaK;
case 'wbmp': $img = ImageCreateFromWBMP($img_original); break;
default: $img = ImageCreateFromJPEG($defecto); break;
}
} else {
$img = ImageCreateFromJPEG($defecto);
}
if(!empty($img)) {
$new_w_R = ImageSX($img);
$new_h_R = ImageSY($img);
//$img_nueva_altura = 50;
// se calcula la relación alto/ancho
$aspect_ratio = $new_h_R/$new_w_R;
$aspect_ratio2 = $new_w_R/$new_h_R;
if ($new_w_R >= $new_h_R){
// se ajusta al nuevo tamaño
$img_nueva_altura = abs($img_nueva_anchura * $aspect_ratio);
}
else{$img_nueva_anchura = abs($img_nueva_altura * $aspect_ratio2);}
// crear imagen nueva

$thumb = ImageCreateTrueColor($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen. La imagen se reajustará al nuevo tamaño
ImageCopyResampled($thumb,$img,0,0,0,0,$img_nueva_anchura,
$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indica $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
}
}

//inseción de imagen
//$fileName = $max."_".$_FILES['userfile']['name'];
$extension = explode(".",$_FILES['userfile']['name']);
//$fileName = $extension[0].".".$extension[1];
$fileName = $referencia.".".$extension[1];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
//echo $tmpName;
$uploaddir = "/home/tusitio/www/img/";
$uploadfile = $uploaddir . $fileName ;

if (move_uploaded_file($tmpName, $uploadfile)) {
chmod($uploadfile, 0644);
//echo "File is valid, and was successfully uploaded.\n";
//redimensionar
$source=$uploadfile; // archivo de origen
$dest=$uploaddir.$referencia."th.".$extension[1]; // archivo de destino
$dest2=$uploaddir.$referencia.".".$extension[1]; // archivo de destino
// echo "nuevoarchivo ".$dest;
/* $img_nueva_anchura=120;
$img_nueva_altura=120;
$img_nueva_calidad=100;*/
//redimensionar_jpeg($source,$dest,$img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad);
// Ejemplo
redimensionar("jpg",$source,$dest,120,120,95);
redimensionar("jpg",$source,$dest2,500,500,95);
//finredimensionar
} else {
// echo "Possible file upload attack!\n";
//echo 'Here is some more debugging info:';
//print_r($_FILES);
}


Ese es el código que al final utilicé. Espero que os pueda servir.