Hola, necesito resolver urgente esto, espero que me puedan ayudar.
Yo tengo un formulario para llenar datos y se puede subir una imagen que tiene que ser guardada en la base de datos. Con esto no tengo problema, ya que hice lo siguiente y funciona bien:
Código PHP:
$nombre = $_FILES[archivo][tmp_name];
if ($nombre != "")
{
$tamanio=filesize($nombre);
$fp=fopen($nombre,"r");
$imagen=fread($fp,$tamanio);
$imagen=addslashes($imagen);
}
// despues guardo $imagen en la base de datos
Ahora, yo antes de guardar la imagen necesito cambiarle el tamaño para guardar todas la imagenes que sean subidas con el mismo tamaño.
Me dijeron que lo podia hacer con el siguiente codigo:
Código PHP:
function resizeImg($s_img, $d_img, $w_max, $h_max)
{
// Guarda los posibles tipos de imagenes en un array ($img_types)
static $img_types = array(
1 => 'Gif',
2 => 'Jpeg',
3 => 'Png'
);
if (file_exists($s_img))
{
// Obtiene el tipo del fichero
list(,,$type) = getImageSize($s_img);
// No se reconoce el tipo del fichero
if (!isset($img_types[$type])) {
trigger_error('No se reconoce el tipo de imagen', E_USER_WARNING);
return false;
}
// Se define función que creará la imagen y se comprueba que exista
if (!function_exists($f_create = 'imageCreateFrom' . $img_types[$type])) {
trigger_error("No existe la función '{$f_create}' necesaria para abrir la imagen.", E_USER_WARNING);
return false;
}
// Crea la imagen a partir del fichero y comprueba que se haya cargado bien
if (!$img = $f_create($s_img)) {
trigger_error("No se pudo abrir el fichero correctamente.", E_USER_WARNING);
return false;
}
// Obtiene el tamaño de la imagen original
list($aw, $ah) = array(imageSX($img), imageSY($img));
// Si el ancho o el alto de la imagen es menor o igual a 0
if ($aw <= 0 || $ah <= 0) {
trigger_error("El tamaño de la imagen es incorrecto.", E_USER_WARNING);
return false;
}
// Se calcula la proporción de la imagen
if ($aw > $ah) {
$nw = $w_max;
$nh = ($nw / $aw) * $ah;
} else {
$nh = $h_max;
$nw = ($nh / $ah) * $aw;
}
// Si se puede crear la imagen a color verdadero se crea
if (function_exists('imageCreateTrueColor')) {
$img2 = imageCreateTrueColor($nw, $nh);
} else {
if (function_exists('imageCreate')) {
trigger_error("No existe la función 'imageCreate', no se puede crear la imagen.", E_USER_WARNING);
return false;
}
$img2 = imageCreate($nw, $nh);
}
if (!$img2) {
trigger_error("No se pudo crear la imagen correctamente.", E_USER_WARNING);
return false;
}
// Se intenta usar imageCopyResampled
if (function_exists('imageCopyResampled')) {
imageCopyResampled($img2, $img, 0, 0, 0, 0, $nw, $nh, $aw, $ah);
} else {
if (function_exists('imageCopyResized')) {
trigger_error("No existe la función 'imageCopyResized', no se puede redimensionar la imagen.", E_USER_WARNING);
return false;
}
imageCopyResized($img2, $img, 0, 0, 0, 0, $nw, $nh, $aw, $ah);
}
// Se comprueba que exista la función para guardar la imagen, en caso
// contrario se prueban otros formatos.
foreach(array($img_types[$type], 'Jpeg', 'Png') as $type_t) {
if (function_exists($f_save = 'image' . $type_t)) {
// Se guarda la imagen
if ($f_save($img2, $d_img)) return true;
}
}
trigger_error("No se pudo guardar la imagen en '{$d_img}'.", E_USER_WARNING);
return false;
}
trigger_error("No existe el fichero '{$s_img}'.", E_USER_WARNING);
return false;
}
El problema es que no se como ni cuando llamar esta funcion, ya que probe llamandola despues del addslashes($imagen), y le mando $imagen y me dice que no existe el fichero..., probé mandandole $imagen pero sin hacerle el addslashes, pero tampoco funcionaba. Quisiera ver si alguien me puede decir en que momento llamar a la funcion, que variable le paso, y si a la imagen que me devuelve le tengo que hacer algo para guardarla en la base de datos o simplemente la gurdo como me la devuelve.
Bueno, agradezco si alguien se tomo el tiempo de leer todo esto. Muchas Gracias!
Germán.