使用 PHP 调整变量中保存的图像大小,同时保留宽高比

问题描述 投票:0回答:1

SO 和网络上其他地方有大量关于如何在图像位于磁盘上时使用 PHP 调整图像大小的答案。但是,如果图像保存在变量中,则这些方法不起作用。我相信这是因为磁盘上的图像是二进制文件,而变量中的图像作为字符串保存,但我不知道如何将一个图像转换为另一个。

如何使用 GD 库修改以下代码以处理保存在变量中而不是磁盘上的 png 图像?

function resize_image($file, $w, $h, $crop=FALSE) { list($width, $height) = getimagesize($file); $r = $width / $height; if ($crop) { if ($width > $height) { $width = ceil($width-($width*abs($r-$w/$h))); } else { $height = ceil($height-($height*abs($r-$w/$h))); } $newwidth = $w; $newheight = $h; } else { if ($w/$h > $r) { $newwidth = $h*$r; $newheight = $h; } else { $newheight = $w/$r; $newwidth = $w; } } $src = imagecreatefromjpeg($file); $dst = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); return $dst; } Call with $img = resize_image(‘/path/to/some/image.jpg’, 200, 200);
    
php image binary png gd
1个回答
0
投票
您需要的两个替换功能是:

  • 从字符串获取图像大小
  • 从字符串创建图像
根据文档,它们的行为方式相同,但可以将变量中的图像数据作为字符串处理。当您重构代码时,只需更改您的函数以接受整个图像作为字符串数据作为您的输入参数。

© www.soinside.com 2019 - 2024. All rights reserved.