0

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

2 Answers 2

1

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;
Sign up to request clarification or add additional context in comments.

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.