[wp-hackers] Replacing image_resize() function?
Peter Westwood
peter.westwood at ftwr.co.uk
Wed Apr 8 17:19:52 GMT 2009
On 8 Apr 2009, at 17:40, Raul Peixoto wrote:
> Hi there!
>
> I'm new to this list, so it will be the first time writing to this
> list, so I hope to enjoy my time here!
>
> I'm working on a way to replace the image_resize() function, inside
> wp-includes/media.php and I need some advice regarding this...
>
> Wordpress allows me to crop, or even generate new image sizes (with
> a proper hook into the additional_image_sizes function), however I'm
> working on a project that requires me to rewrite the image_resize
> function...
>
> Why is that?
>
> Well, I need to resize all images to an exact specific size (let's
> say 120x90 for thumbnail size, and 250x125 for medium size) but I
> need to do this without cropping. So the only way is to resize and
> then add a margin to comply with the desired size.
>
> I have created the new function and named it sp_image_resize.
>
> Hacking the core files:
>
> Now the way I got this to work was by hacking into /wp-includes/
> media.php, inside function: image_make_intermediate_size, around
> line 412
>
> change: $resized_file = image_resize($file, $width, $height, $crop);
> to: $resized_file = sp_image_resize($file, $width, $height, $crop);
>
>
> So are there any ideas to replace this function without hacking the
> core directly?
>
> ==
>
> I tried to add_filter( 'image_resize', 'sp_image_resize', 1, 4 );
> but it doesn't work.
> I also tried to replace the image_make_intermediate_size the same
> way but with no success.
>
> Can someone help?
There is not currently a simple way to catch all use cases of
image_resize.
Depending on which image_resize calls you are trying to affect you
could probably use the hooks in wp_generate_attachment_metadata
You can filter the sizes in generates using the
'intermediate_image_sizes' filter and return an empty array to stop
WordPress doing the resize itself.
You would then do your resizing on the
'wp_generate_attachment_metadata' filter and populate the $metadata
array with the extra info.
It looks like for a future proof solution you will need a new hook in
image_resize to allow you to take over the function.
Please create a ticket on trac with a suggestion and some example
plugin code which uses the suggested hook and I will make sure this
makes it into 2.8 - you should then be able to backport that change to
your current 2.7.1 install and not lose the functionality on upgrade.
westi
--
Peter Westwood
http://blog.ftwr.co.uk | http://westi.wordpress.com
C53C F8FC 8796 8508 88D6 C950 54F4 5DCD A834 01C5
More information about the wp-hackers
mailing list