我正在使用imagecreatefromjpeg(),imagecreatefrompng()和imagecreatefromgif()来转换某些图像文件,并希望在转换后知道图像的文件大小。我已经尝试过filesize(imagecreatefrompng(filename))和getimagesize() - 但它们似乎都没有用。还有另一种方式吗?
答案 0 :(得分:1)
filesize()
和getimagesize()
需要文件名。 imagecreatefromwhatever()
返回GD文件句柄。你不能把一个喂给另一个。您需要将图像保存到文件中,然后在该新文件上使用文件大小,或使用输出缓冲机制捕获保存函数的输出并对其执行strlen,例如。
$handle = imagecreatefromgif('original.gif');
imagepng($handle, 'new.png');
$size = filesize('new.png');
或
$handle = imagecreatefromgif('original.gif');
ob_start();
imagepng($handle);
$png = ob_get_clean();
$size = strlen($png);
没有其他实用方法可以确定最终图像大小而不首先生成该文件 - PNG / JPG输出压缩在很大程度上取决于图像的内容 - “简单”图像压缩远远超过“忙”图像。
答案 1 :(得分:0)
内部图像资源上没有文件大小;在“文件大小”有任何意义之前,您需要将图像输出到最终形式。