[wp-hackers] Extract first image from a post

Alex Hempton-Smith hempsworth at googlemail.com
Sun Nov 23 23:39:54 GMT 2008


Sorry, that last tag should have been:
<?php echo teaserimg(100,100); ?>

-- Alex


On Sun, Nov 23, 2008 at 11:39 PM, Alex Hempton-Smith <
hempsworth at googlemail.com> wrote:

> In the following code, the script resizes the image proportionally
> depending on the width AND the height of the image. That means that if the
> image is too wide or too high it will be resized. It just means that a
> really wide image can't get through just because it's height was an
> acceptable height.
> Note that it isn't distorted, the proportions are kept the same.
>
> function teaserimg($mw=215,$mh=160)
> {
>
> global $post;
>  $html = $post->post_content;
> $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $html,
> $matches, PREG_SET_ORDER);
>  $p = $matches [0] [1];
>  if(list($w,$h) = @getimagesize($p)) {
>  foreach(array('w','h') as $v) { $m = "m{$v}";
> if(${$v} > ${$m} && ${$m}) { $o = ($v == 'w') ? 'h' : 'w';
>  $r = ${$m} / ${$v}; ${$v} = ${$m}; ${$o} = ceil(${$o} * $r); } }
> return("<img src='{$p}' alt=' ' width='{$w}' height='{$h}' />"); }
> }
>
> You can override the default maxwidth/maxheight settings when you insert
> the template tag, for example this would make sure images are resized if
> they are higher OR wider than 100:
>
> <?php echo teaserimg(100,200); ?>
>
> -- Alex
>


More information about the wp-hackers mailing list