I'm trying to reduce an images blob size to under 150 KB
I've made a php function to do this however imagejpeg
keeps on outputing data instead of storing it into a variable.
Basically, does anybody know how to compress an image into 150KB or lower? Quality loss is okay.
It comes in as base64. Then I decode it to a blob and pass it through this function.
function compressImageBlob($image_blob, $type, $loop = 0) {
global $MAX_IMAGE_SIZE;
$blob_size = strlen($image_blob);
$loop++;
if($loop > 10){
return $image_blob;
}
if($blob_size >= $MAX_IMAGE_SIZE){
$quality = ($MAX_IMAGE_SIZE/$blob_size)*10;
if($quality >= 100){
// it should never come here, but just in case
$quality = 10;
}
$img = imagecreatefromstring($image_blob);
$image_blob = imagejpeg($img, NULL, $quality);
$image_blob = compressImageBlob($image_blob,$type,$loop);
}
return $image_blob;
}