Have a look at phpThumbOn -
https://github.com/AgelxNash/phpthumbon.
phpThumbOn has the same parameters as rather popular MODX Revolution snippet - phpThumbOf. But it was written from scratch and optimized for multiple calls in a page. The essential phpThumbOn feature is the ability to show so called noimage picture, which is often missed while using other resizers.
The next feature is essential for SEO — it's the name of resized image. phpThumbOn adds only 3 random characters to the file name, instead of 32-letters abracadabra as phpThumbOf does. And even more, the folders structure in thumbs folder represents the folders structure of original images. So, it's easy to find thumb or its original image. But to prevent images leeching, the snippet can hide the root folder containing original image.
Another advantage of phpThumbOn is perfomance boost in case of repeated calls because this snippet doesn't always check the whole cache folder (it doesn't mean the complete absence of cache refresh).
There is an option in system settings to set the quality of generated images. And it's possible to set this option for particular images using "q" parameter in snippet call.
The disadvange is the lack of Amazon support.
phpThumbOn call is the same as phpThumbOf call.
phpThumbOn automatically checks if TV of image type is not empty and original image is accessible. Compare:
[[phpthumbof? &input=`[[*image:default:=`[[++assets_path]]images/noimage.jpg`]]` &options=`&w=610&f=jpg`]]
and
[[phpthumbon? &input=`[[*image]]` &options=`&w=610&f=jpg`]] + system setting phpthumbon.noimage set to {assets_path}images/noimage.jpg
Preventing original images leeching.
Folders structure in cache folder is the same as in original images folder. We can hide the name of root folder. For example, the path of original image is "/assets/images/test/img.jpg", and the cache folder set in phpthumbon.cache_dir in system settings has the name "cache". If we change system setting phpthumbon.images_dir to "images", then after snippet call we'll have the path: "/assets/cache/test/100x200_img_9ah.jpg."