PHP压缩/减少blob图像数据大小

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;
}

I can't tell if your issue is creating a blob instead of a file, or how to compress. I assume it is the former. I think you need to do the following to create a blob rather than a file:

ob_start();                      // Start output buffering
imagejpeg($img,NULL,$quality);   // Generate JPEG into buffer
$blob=ob_get_contents();         // Load output buffer into $blob var
ob_end_clean();                  // Clean up buffer

In case you are unfamiliar, it is called "output buffering" and there's an example here.