blahblah
blahblah

Reputation: 1018

PHP script is not resizing image

I have a method to resize image, that accepts image string and new dimensions and should return new image string. But it doesn't work

   public function putBase64ThumbToFile($base64String){
    $fs = new Filesystem();
    $TEMP_FOLDER_NAME = "tmpimageupload";

    $pos  = strpos($base64String, ';');
    $type = explode('/', substr($base64String, 0, $pos))[1];

    $base64String = str_replace('data:image/'. $type .';base64,', '', $base64String);
    $base64String = str_replace(' ', '+', $base64String);
    $data = base64_decode($base64String);

    $resizedImage = $this->resizeAndCompressImage($data, 100, 100);

    $fs->mkdir($TEMP_FOLDER_NAME, 0700);
    $tempFilePath = $TEMP_FOLDER_NAME.'/'.uniqid() . '.' . $type;

    file_put_contents($tempFilePath, $resizedImage);
}

public function resizeAndCompressImage($data, $w, $h) {
    list($width, $height) = getimagesizefromstring($data);
    $r = $width / $height;

    if ($w/$h > $r) {
        $newwidth = $h*$r;
        $newheight = $h;
    } else {
        $newheight = $w/$r;
        $newwidth = $w;
    }

    $src = imagecreatefromstring($data);
    $dst = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    ob_start();
    imagepng($src);
    $image = ob_get_clean();

    return $image;
}

In the result I get same unresized image.

Upvotes: 0

Views: 30

Answers (1)

Eric Liebstreich
Eric Liebstreich

Reputation: 93

You mistake is on this line:

imagepng($src);

you take the source image and not the destination image:

imagepng($dst);

Upvotes: 1

Related Questions