首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP从内存中的curl调整图像大小

PHP从内存中的curl调整图像大小
EN

Stack Overflow用户
提问于 2018-06-07 10:23:20
回答 2查看 385关注 0票数 0

我正在尝试调整从Curl请求中获得的图像的大小,但我不想为了调整大小而将其保存到文件中。这就是我正在尝试的,但不起作用:

代码语言:javascript
复制
$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);
EN

回答 2

Stack Overflow用户

发布于 2018-06-15 07:26:09

以下是调整$picture大小的有效方法:

代码语言:javascript
复制
$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;
票数 1
EN

Stack Overflow用户

发布于 2019-12-03 05:46:55

我稍微修改了一下,并以这种方式使用它:

代码语言:javascript
复制
    // --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;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50732124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档