JPG File Size Optimization - PHP, ImageMagick, & Google's Page Speed
-
23-09-2019 - |
문제
I have photo gallery code that does image re-sizing and thumbnail creation. I use ImageMagick to do this. I ran a gallery page through Google's Page Speed tool and it revealed that the re-sized images and thumbnails both have about an extra 10KB of data (JPEG files specifically).
What can I add to my scripts to optimize the file size?
ADDITIONAL INFORMATION
I am using the imagick::FILTER_LANCZOS
filter with a blur setting of 0.9
when calling the resizeImage()
function. JPEGs have a quality setting of 80
.
해결책
I found this SO question, "Tools for JPEG optimization?", that has some good information, but the solutions are outside of PHP. Using hints from that question's solutions I found that there were two lossless optimizations that could be performed:
- Optimization of the Huffman coding tables
- Removal of meta-data (EXIF, etc)
Both of can be accomplished with ImageMagick
this way:
- According to ImageMagick documentation, the optimal Huffman coding tables are computed by default. This step is already taken care of, yay!
- Removal of meta-data can be accomplished very simply by using the stripImage() method.
One image I tested was reduced by 12KB. The 600x450 file went from 63.42KB to 51.42KB, and the 140x105 thumbnail went from 17.98KB to 5.98KB.
다른 팁
Run your images through Yahoo's SmushIt service, where the images are converted to a PNG with an exact number of colors. No loss in quality, but a loss in weight :)