Aug 18

By default timthumb offers a cropping starting from center middle. Sometimes you may need some flexibility with a script so we used our knowledge to modify it a bit and make it more functionak for our needs. There are approx. 30 lines of code to add to make it work (see below). This supposed to make the use of plugins based on timthumb more flexible.By default timthumb offers a cropping starting from center middle. Sometimes you may need some flexibility with a script so we used our knowledge to modify it a bit and make it more functionak for our needs. There are approx. 30 lines of code to add to make it work (see below). This supposed to make the use of plugins based on timthumb more flexible.

Also an edited version is available for download.

Added “cropfrom” filter, accepted are values:

1. middle,

2. middleleft,

3. middleright,

4. topleft,

5. topright,

6. topcenter,

7. bottomleft,

8. bottomright,

9. bottomcenter,

simple modification done in 1 place on timthumb.php – easy for any level.

If you want to edit an original timthumb code:

1. Download recent timthumb version.

Read all about it and it’s usage if you not familiar with it yet.

2. Open it in text editor, and:

find: (line 59)

$quality         = preg_replace(“/[^0-9]+/”, “”, get_request(“q”, 80));

$filters        = get_request(“f”, “”);

add below:

// get crop position – added by studio-xl.com

$crop_from = get_request( ‘cropfrom’, ‘middle’ ) ;

// get crop position – added by studio-xl.com

find: (line 160)

imagecopyresampled( $canvas, $image, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h );

REPLACE with:

// Crop position – modification by Studi-XL.com

if($crop_from ==”middle” )

// crop from center

{ imagecopyresampled( $canvas, $image, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

// crop from middle left

elseif ($crop_from ==”middleleft” )

// crop from middle right

{ imagecopyresampled( $canvas, $image, 0, 0, 0, $src_y, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”middleright” )

// crop from top center

{ imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”topcenter” )

// crop from top center

{ imagecopyresampled( $canvas, $image, 0, 0, $src_x, 0, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”topleft” )

// crop from top left

{ imagecopyresampled( $canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”topright” )

// crop from top center

{ imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, 0, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”bottomcenter” )

// crop from bottom center

{ imagecopyresampled( $canvas, $image, 0, 0, $src_x, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”bottomleft” )

// crop from bottom left

{ imagecopyresampled( $canvas, $image, 0, 0, 0, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

elseif ($crop_from ==”bottomright” )

// crop from bottom center

{ imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

elseif  (!$crop_from)

// no data

{ imagecopyresampled( $canvas, $image, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

// Crop position – modification by Studi-XL.com

* You may delete any block that you don’t need or leave it all for a max. flexibility.

3. Usage:

by default timthumb query string looks something like this:

src=/images/whatever.jpg&h=150&w=150&zc=1

we added 1 more filter which tells timthumb where to position cropping, you need to add &cropfrom=[position] to it, for example:

src=/images/whatever.jpg&h=150&w=150&zc=1&cropfrom=topleft

If you want an already updated file

You may download a modified ver. This one is fully working and used in our WP blogs.

Dowload edited timthumb.php

Demo of all positions

demo link