estoy desarrollando módulo de subida de imágenes al servidor en el que una vez subida la imagen primero la redimensiono y luego creo una miniatura, para ello estoy utilizando la clase image_lib pero no hay manera de que haga las dos cosas correctamente. Me explico, si redimensiono y luego creo la miniatura unicamente me crea la imagen redimensionada pero lo hace mal, me crea una imagen negra con una miniatura de la imagen en la esquina superior derecha. En cambio, si comento la función de redimensión me crea la miniatura correctamente, a parte de la imagen original que también es subida al servidor. Si comento la función que crea la miniatura me crea la imagen redimensionada correctamente en el servidor.
Por cierto, las funciones de redimensionar y crear minuatura las he creado dentro de un helper. Les muestro el código para ver si me pueden ayudar:
Código PHP:
<?php
// image_helper.php
if(!defined('BASEPATH')) exit('No direct script access allowed');
if(!function_exists("resizeImageTutorial"))
{
function resizeImageTutorial($filename)
{
$CI =& get_instance();
$config['image_library'] = 'gd2';
$config['source_image'] = $CI->config->item("upload_image_path").$filename;
$config['maintain_ratio'] = TRUE;
$config['width'] = $CI->config->item("image_width");
$config['height'] = $CI->config->item("image_height");
$config['master_dim'] = $CI->config->item("image_master_dim");
$config["quality"] = $CI->config->item("image_quality");
$CI->load->library('image_lib', $config);
if(!$CI->image_lib->resize())
return $CI->image_lib->display_errors();
return "";
}
}
if(!function_exists("makeThumbnailTutorial"))
{
function makeThumbnailTutorial($filename)
{
$CI =& get_instance();
$config['image_library'] = 'gd2';
$config['source_image'] = $CI->config->item("upload_image_path").$filename;
$config['maintain_ratio'] = TRUE;
$config['width'] = $CI->config->item("thumb_width");
$config['height'] = $CI->config->item("thumb_height");
$config['master_dim'] = $CI->config->item("thumb_master_dim");
$config["quality"] = $CI->config->item("thumb_quality");
$config["create_thumb"] = TRUE;
$CI->load->library('image_lib', $config);
if(!$CI->image_lib->resize())
return $CI->image_lib->display_errors();
return "";
}
}
if(!function_exists("getThumbFilename"))
{
function getThumbFilename($filename)
{
$pos = strrpos($filename,".");
echo substr($filename,0,$pos)."_thum".substr($filename,$pos);
}
}
Código PHP:
// este código se ejecuta justo después de hacer el upload de la imagen original al servidor.
$new_file = $upload_data["file_name"];
if($upload_type=="image")
{
resizeImageTutorial($new_file);
makeThumbnailTutorial($new_file);
$old_file = $this->Catalogo->getImageTutorial($idtuto);
if(!is_null($old_file) && $old_file!="" && $old_file!=$new_file)
$this->removeOldFile("image",$old_file);
$this->Catalogo->updateImageTutorial($idtuto,$new_file);
$view_data["image"] = $new_file;
}
De antemano gracias.