Php 使用imagecreatefromjpeg的脚本内存消耗高
我构建了以下代码来检查JPG并将其转换为WebP图像 这似乎占用了大量内存,当WebP文件已经存在时,当前大约占用14680064内存,创建WebP时占用27262976内存 有谁能告诉我这是否“正常”,以及我是否可以对代码进行任何修改以优化代码Php 使用imagecreatefromjpeg的脚本内存消耗高,php,Php,我构建了以下代码来检查JPG并将其转换为WebP图像 这似乎占用了大量内存,当WebP文件已经存在时,当前大约占用14680064内存,创建WebP时占用27262976内存 有谁能告诉我这是否“正常”,以及我是否可以对代码进行任何修改以优化代码 $path = 'http://www.domain.co.uk/images/uploads/gallery/1.jpg'; if ( !empty($path) ) { if ( strpos( $_SERVER['HTT
$path = 'http://www.domain.co.uk/images/uploads/gallery/1.jpg';
if ( !empty($path) )
{
if ( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false )
{
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domain_path = $protocol . $_SERVER['HTTP_HOST'];
$filename = basename($path);
$filename_no_ext = basename($path, ".jpg");
$path = str_replace($domain_path, ".", $path);
$path_without_filename = str_replace($filename, "", $path);
$save_to_path = $path_without_filename.$filename_no_ext.'.webp';
if ( file_exists($path) )
{
if ( ! file_exists($save_to_path) )
{
$temp = imagecreatefromjpeg($path);
imagewebp($temp, $save_to_path);
imagedestroy($temp);
}
}
return substr($save_to_path, 1);
}
else
{
return $path;
}
}
上传的图像有多大?根据经验,它将使用大约像素宽度*高度*3字节的内存。您观察到的内存消耗大约相当于3000x3000px的图像。为什么不使用呢?谢谢@deceze,这真的很有帮助。我不知道这是计算结果。这些图像的长度为3000px,这是正确的。将图像加载到内存(例如,
imagecreatefromjpeg
)会将原始图像数据存储在内存中,即每像素每颜色(RGB)一个字节…