Reputation: 11
I'm trying to resize an image I'm getting from a Curl request, but I don't want to save it to a file in order to resize it. This is what I'm trying, but not working:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_file);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$picture = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
// And then to resize $picture
$data = htmlspecialchars($picture, ENT_QUOTES);
$data = base64_decode($data);
$im = imagecreatefromstring($data);
$imaget1 = imagescale($im, $maxsize);
Upvotes: 0
Views: 505
Reputation: 7327
I changed it around a little bit and used it in this way:
// --Take in curl data image and return base64 text image resized --
private function GenBase64Thumb($curl_image_data, $maxsize = 300, $quality = 85) {
$image = 'data://application/octet-stream;base64,' . base64_encode($curl_image_data);
$imagecreated = null;
$mime = getimagesize($image);
switch ($mime['mime']) {
case 'image/jpeg':
case 'image/jpg':
$imagecreated = imagecreatefromjpeg($image);
break;
case 'image/png':
$imagecreated = imagecreatefrompng($image);
break;
case 'image/gif':
$imagecreated = imagecreatefromgif($image);
break;
default:
return null;
}
if (!empty($imagecreated) && $imageScaled = imagescale($imagecreated, $maxsize)) {
ob_start();
switch ($mime['mime']) {
case 'image/jpeg':
case 'image/jpg':
imagejpeg($imageScaled, NULL, $quality);
break;
case 'image/png':
imagepng($imageScaled, NULL, "8");
break;
case 'image/gif':
imagegif($imageScaled, NULL, $quality);
break;
default:
return null;
}
$image = ob_get_contents();
ob_end_clean();
imagedestroy($imagecreated);
return !empty($image) ? base64_encode($image) : null;
}
return null;
}
Upvotes: 0
Reputation: 11
What worked was this to resize $picture:
$image = 'data://application/octet-stream;base64,' . base64_encode($picture);
$mime = getimagesize($image);
if($mime['mime'] == 'image/jpeg'){ $imagecreated = imagecreatefromjpeg($image); }
if($mime['mime'] == 'image/jpg'){ $imagecreated = imagecreatefromjpeg($image); }
if($mime['mime'] == 'image/png'){ $imagecreated = imagecreatefrompng($image); }
if($mime['mime'] == 'image/gif'){ $imagecreated = imagecreatefromgif($image); }
$imageScaled = imagescale($imagecreated, $maxsize);
ob_start ();
if($mime['mime'] == 'image/jpeg'){ imagejpeg($imageScaled, null, $quality); }
if($mime['mime'] == 'image/jpg'){ imagejpeg($imageScaled, null, $quality); }
if($mime['mime'] == 'image/png'){ imagepng($imageScaled, null, "8"); }
if($mime['mime'] == 'image/gif'){ imagegif($imageScaled, null, $quality); }
$image = ob_get_contents ();
ob_end_clean ();
imagedestroy($imagecreated);
return $image;
Upvotes: 1