php - PHP从内存中的curl调整图像大小
问题描述
我正在尝试调整从 Curl 请求中获得的图像的大小,但我不想将其保存到文件中以调整其大小。这是我正在尝试,但不工作:
$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);
解决方案
有效的是调整 $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;
推荐阅读
- mongodb - 带有 upsert false 的 Mongo updateOne 不起作用?
- php - 匹配数据并使用 IF 语句打印数据
- python - 在 python 中使用 mysql 连接器从 mysql 数据库中正确获取 blob
- ios-simulator - IOS Xcode 10 模拟器慢速重绘
- linux - 可以使用 du 获得正确的文件大小
- linkedin - Linkedin Api 错误:此应用不允许直接赞助内容
- pdfbox - 从 PDDocument 获取 acroForms
- shell - While 循环在第一次迭代后中断
- laravel - Laravel 有条件的 where 与 eloquent
- c# - Wixsharp 如何引用自定义动作项目