[Probablemente La Mejor] Función para Redimensionar Imágenes en WordPress

Probablemente ésta sea LA MEJOR función para redimensionar imágenes en WordPress, lo mejor es que la incluyes directamente en tu functions.php y la cargas tan simple como:

[sourcecode=”php”]

if (has_post_thumbnail ()) {
$image_id = get_post_thumbnail_id();
$image = vt_resize($image_id, ”, 250, 250, true, 100);
echo ‘

‘;
}

[/sourcecode]

Aunque le apliqué una mejora ínfima que permite ajustar la calidad de la imagen redimensionada, por lo que quedaría algo así

[sourcecode=”php”]

/*
* Resize images dynamically using wp built in functions
* Victor Teixeira
*
* php 5.2+
*
* Exemplo de uso:
*
*
*


*
* @param int $attach_id
* @param string $img_url
* @param int $width
* @param int $height
* @param bool $crop
* @param int $quality default: 90
* @return array
*/
function vt_resize($attach_id = null, $img_url = null, $width, $height, $crop = false, $quality=90) {
// this is an attachment, so we have the ID
if ($attach_id) {
$image_src = wp_get_attachment_image_src($attach_id, ‘full’);
$file_path = get_attached_file($attach_id);
// this is not an attachment, let’s use the image url
} else if ($img_url) {

$file_path = parse_url($img_url);
$file_path = $_SERVER[‘DOCUMENT_ROOT’] . $file_path[‘path’];

//$file_path = ltrim( $file_path[‘path’], ‘/’ );
//$file_path = rtrim( ABSPATH, ‘/’ ).$file_path[‘path’];

$orig_size = getimagesize($file_path);

$image_src[0] = $img_url;
$image_src[1] = $orig_size[0];
$image_src[2] = $orig_size[1];
}

$file_info = pathinfo($file_path);

$extension = ‘.’ . $file_info[‘extension’];

// the image path without the extension
$no_ext_path = $file_info[‘dirname’] . ‘/’ . $file_info[‘filename’];

$cropped_img_path = $no_ext_path . ‘-‘ . $width . ‘x’ . $height . $extension;

// checking if the file size is larger than the target size
// if it is smaller or the same size, stop right here and return
if ($image_src[1] > $width || $image_src[2] > $height) {

// the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
if (file_exists($cropped_img_path)) {

$cropped_img_url = str_replace(basename($image_src[0]), basename($cropped_img_path), $image_src[0]);

$vt_image = array(
‘url’ => $cropped_img_url,
‘width’ => $width,
‘height’ => $height
);

return $vt_image;
}

// $crop = false
if ($crop == false) {

// calculate the size proportionaly
$proportional_size = wp_constrain_dimensions($image_src[1], $image_src[2], $width, $height);
$resized_img_path = $no_ext_path . ‘-‘ . $proportional_size[0] . ‘x’ . $proportional_size[1] . $extension;

// checking if the file already exists
if (file_exists($resized_img_path)) {

$resized_img_url = str_replace(basename($image_src[0]), basename($resized_img_path), $image_src[0]);

$vt_image = array(
‘url’ => $resized_img_url,
‘width’ => $proportional_size[0],
‘height’ => $proportional_size[1]
);

return $vt_image;
}
}

// no cache files – let’s finally resize it
$new_img_path = image_resize($file_path, $width, $height, $crop, $quality);
$new_img_size = getimagesize($new_img_path);
$new_img = str_replace(basename($image_src[0]), basename($new_img_path), $image_src[0]);

// resized output
$vt_image = array(
‘url’ => $new_img,
‘width’ => $new_img_size[0],
‘height’ => $new_img_size[1]
);

return $vt_image;
}

// default output – without resizing
$vt_image = array(
‘url’ => $image_src[0],
‘width’ => $image_src[1],
‘height’ => $image_src[2]
);

return $vt_image;
}

[/sourcecode]

100% recomendada =)

Saludos

4 thoughts on “[Probablemente La Mejor] Función para Redimensionar Imágenes en WordPress

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *