5

Is there a way to make WordPress process Full size images, which by default it leaves unmodified?

4
  • Unmodified as in not resizing the picture? Your question is a bit ambiguous.
    – mystline
    Apr 13, 2012 at 8:45
  • Problem: people upload huge images and WordPress leaves them as they are. I need to find a way to optimize Full size images, but there is no such option in the admin area.
    – Dan
    Apr 13, 2012 at 10:07
  • Under Media, you have 3 sizes options by default.
    – Wyck
    Apr 13, 2012 at 15:09
  • yup, but I need to compress the "Full size" image as the title and my question obviously state.
    – Dan
    Apr 14, 2012 at 4:26

1 Answer 1

4

Yes, there is.

Found here:
http://www.wprecipes.com/how-to-automatically-use-resized-image-instead-of-originals

It will replace the original picture with the large size, defined in Media Settings (/wp-admin/options-media.php).

Here's the code:

add_filter('wp_generate_attachment_metadata','replace_uploaded_image');

function replace_uploaded_image($image_data) 
{
    // if there is no large image : return
    if ( !isset($image_data['sizes']['large']) ) 
        return $image_data;

    // paths to the uploaded image and the large image
    $upload_dir              = wp_upload_dir();
    $uploaded_image_location = $upload_dir['basedir'] . '/' . $image_data['file'];
    $large_image_location    = $upload_dir['path'] . '/' . $image_data['sizes']['large']['file'];

    // delete the uploaded image
    unlink($uploaded_image_location);

    // rename the large image
    rename($large_image_location, $uploaded_image_location);

    // update image metadata and return them
    $image_data['width']  = $image_data['sizes']['large']['width'];
    $image_data['height'] = $image_data['sizes']['large']['height'];
    unset($image_data['sizes']['large']);

    return $image_data;
}

It is possible to use it with a custom size:

add_image_size( 'new-large', 1600, 1200 ); 

Changing all the occurrences of $image_data['sizes']['large'] in the original code with $image_data['sizes']['new-large']

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.