0

我正在使用 imagecreatefromjpeg()、imagecreatefrompng() 和 imagecreatefromgif() 来转换一些图像文件,并想知道转换后图像的文件大小。我已经尝试过 filesize(imagecreatefrompng(filename)) 和 getimagesize() - 但它们似乎都不起作用。还有其他方法吗?

4

2 回答 2

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 输出压缩在很大程度上取决于图像的内容 - “简单”图像将比“忙碌”图像压缩得多。

于 2012-07-14T15:22:23.443 回答
0

内部图像资源没有文件大小;在“文件大小”有任何意义之前,您需要将图像输出为最终形式。

于 2012-07-14T15:23:12.853 回答