I am trying to develop an image-based web site. I am really confused about the best image type for faster page loading speeds and best compression practices. Please advise me on the best way to compress image sizes.
-
Jpeg, gif and png images are already compressed. Can you clarify? – drew010 Jul 10 '12 at 17:24
4 Answers
If you are looking to reduce the size using coding itself, you can follow this code in php.
<?php
function compress($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
$source_img = 'source.jpg';
$destination_img = 'destination .jpg';
$d = compress($source_img, $destination_img, 90);
?>
$d = compress($source_img, $destination_img, 90);
This is just a php function that passes the source image ( i.e., $source_img
), destination image ( $destination_img
) and quality for the image that will take to compress ( i.e., 90 ).
$info = getimagesize($source);
The getimagesize()
function is used to find the size of any given image file and return the dimensions along with the file type.

- 2,898
- 1
- 20
- 31

- 1,301
- 2
- 8
- 5
-
10this function convert the source images to JPEG, ignore the gif animations and png transparency – nikmauro Nov 06 '15 at 15:14
-
to overcome png transparency issue mentioned by @nikmauro, i used the imagepng instead of imagejpeg. using the imagejpeg for jpg files, ofcourse just modifying if statement to use appropriate function. however to save transparency i also had to add (before output/save) : imagealphablending($image, false); imagesavealpha($image, true); I also had to devide the $quality by 10 to work as imagepng does not go from 0 - 100 but rather 0 - 9 – Shaakir Oct 21 '16 at 12:18
-
Good one there. But one thing that bothers me is why 90 for the compression? Is there a min value which when passed, the image is going to loose its "originality"? – FONGOH MARTIN Oct 30 '17 at 09:05
-
1I'm not sure why but the image gets rotated when I use this code, how would I prevent this from happening. It always seems to be rotated 90 degrees anti clockwise. – MattBlack Mar 27 '18 at 21:49
-
sorted, I had to read the exif data from the original image and adjust accordingly. – MattBlack Mar 27 '18 at 22:07
-
Great! This is working but I'm getting 1 issue with it. While I'm uploading image thru the mobile camera then it sometimes rotates that image 90 degrees. What to do about that?? – rg007891 Jul 04 '23 at 05:08
I'd go for jpeg
. Read this post regarding image size reduction and after deciding on the technique, use ImageMagick
Hope this helps

- 1
- 1

- 26,330
- 7
- 49
- 72
You can resize and then use imagejpeg()
Don't pass 100 as the quality for imagejpeg() - anything over 90 is generally overkill and just gets you a bigger JPEG. For a thumbnail, try 75 and work downwards until the quality/size tradeoff is acceptable.
imagejpeg($tn, $save, 75);

- 9,961
- 14
- 57
- 107
well I think I have something interesting for you... https://github.com/whizzzkid/phpimageresize. I wrote it for the exact same purpose. Highly customizable, and does it in a great way.

- 1,174
- 12
- 30