blahblah blahblah - 23 days ago 6
PHP Question

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.

Answer

You mistake is on this line:

imagepng($src);

you take the source image and not the destination image:

imagepng($dst);

Comments