Skip to content

Instantly share code, notes, and snippets.

@wpjess
Last active April 23, 2020 18:21
Show Gist options
  • Save wpjess/dc02cc04ebbb6b1b607a1105162298c8 to your computer and use it in GitHub Desktop.
Save wpjess/dc02cc04ebbb6b1b607a1105162298c8 to your computer and use it in GitHub Desktop.
WP resize images
///////////////////////////////////////////////////////////////////
// RESIZE IMAGES ON THE FLY
///////////////////////////////////////////////////////////////////
require_once(TEMPLATEPATH . '/functions/resize.php');
<?php
$thumb = get_post_thumbnail_id();
$image = vt_resize( $thumb, '', 150, 150, true );
?>
<img src="<?php echo $image['url']; ?>" alt="<?php the_title(); ?>" title="" />
<?php
if (!function_exists('vt_resize'))
{
function vt_resize($attach_id = null, $img_url = null, $width, $height, $crop = false)
{
if ($attach_id)
{
$image_src = wp_get_attachment_image_src($attach_id, 'full');
$file_path = get_attached_file($attach_id);
}
else if ($img_url)
{
$file_path = parse_url($img_url);
$file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path'];
if (file_exists($file_path) === false)
{
global $blog_id;
$file_path = parse_url($img_url);
if (preg_match("/files/", $file_path['path']))
{
$path = explode('/', $file_path['path']);
foreach ($path as $k => $v)
{
if ($v == 'files')
{
$path[$k - 1] = 'wp-content/blogs.dir/' . $blog_id;
}
}
$path = implode('/', $path);
}
$file_path = $_SERVER['DOCUMENT_ROOT'] . $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);
$base_file = $file_info['dirname'] . '/' . $file_info['filename'] . '.' . $file_info['extension'];
if (!file_exists($base_file))
return;
$extension = '.' . $file_info['extension'];
$no_ext_path = $file_info['dirname'] . '/' . $file_info['filename'];
$cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension;
if ($image_src[1] > $width)
{
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;
}
if ($crop == false or !$height)
{
$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;
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;
}
}
$img_size = getimagesize($file_path);
if ($img_size[0] <= $width)
$width = $img_size[0];
if (!function_exists('imagecreatetruecolor'))
{
echo 'GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library';
return;
}
$editor = wp_get_image_editor($file_path);
if (is_wp_error($editor))
return $editor;
$editor->set_quality(100);
$resized = $editor->resize($width, $height, $crop);
$dest_file = $editor->generate_filename(NULL, NULL);
$saved = $editor->save($dest_file);
if (is_wp_error($saved))
return $saved;
$new_img_path = $dest_file;
$new_img_size = getimagesize($new_img_path);
$new_img = str_replace(basename($image_src[0]), basename($new_img_path), $image_src[0]);
$vt_image = array(
'url' => $new_img,
'width' => $new_img_size[0],
'height' => $new_img_size[1]
);
return $vt_image;
}
$vt_image = array(
'url' => $image_src[0],
'width' => $width,
'height' => $height
);
return $vt_image;
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment