O'Reilly logo

Programming PHP, 3rd Edition by Peter MacIntyre, Kevin Tatroe, Rasmus Lerdorf

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Scaling Images

There are two ways to change the size of an image. The imagecopyresized() function is fast but crude, and may lead to jagged edges in your new images. The imagecopyresampled() function is slower, but features pixel interpolation to give smooth edges and clarity to the resized image. Both functions take the same arguments:

imagecopyresized(dest, src, dx, dy, sx, sy, dw, dh, sw, sh);
imagecopyresampled(dest, src, dx, dy, sx, sy, dw, dh, sw, sh);

The dest and src parameters are image handles. The point (dx, dy) is the point in the destination image where the region will be copied. The point (sx, sy) is the upper-left corner of the source image. The sw, sh, dw, and dh parameters give the width and height of the copy regions in the source and destination.

Example 9-11 takes the php.jpg image shown in Figure 9-9 and smoothly scales it down to one-quarter of its size, yielding the image in Figure 9-10.

Example 9-11. Resizing with imagecopyresampled()

<?php
$source = imagecreatefromjpeg("php.jpg");

$width = imagesx($source);
$height = imagesy($source);
$x = $width / 2;
$y = $height / 2;

$destination = imagecreatetruecolor($x, $y);
imagecopyresampled($destination, $source, 0, 0, 0, 0, $x, $y, $width, $height);

header("Content-Type: image/png");
imagepng($destination);
Original php.jpg image

Figure 9-9. Original php.jpg image

Figure 9-10. Resulting 1/4-sized image

Dividing the height and the width by 4 instead ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required