0

我正在尝试确定 image.php 是否是有效的图片文件。它可能是也可能不是,因为如果 DB 有关于调整大小图片的信息,它将是有效的 - image.php 将调整原始图片的大小并将其打印到屏幕上。还有另一种选择 - 数据库中没有文件名信息,它可能导致错误消息或错误图片。我想获取图像的尺寸,如果它是宽度 = 0 和高度 = 0,则打印错误消息。我试图用 getimagesize 来做,但它会产生错误:

[function.getimagesize]:无法打开流:...中没有这样的文件或目录

路径是 100% 正确的。我读过通过php获取动态制作图片的imagesize是不可能的。我总是可以检查我的数据库,但我很好奇是否有任何黑客可以获取通过 php 动态创建的图像大小。

代码:

$file = "image.php?img=1";
$a = getimagesize($file);
echo 'aaaaaaaaa' . $a;

编辑:

我以另一种方式做到了,因为没有一个解决方案对我有用——我只是检查数据库是否存在正确的文件名。

感谢帮助。

4

2 回答 2

4

You'd have to use a full-blown absolute url for PHP to realize you're requesting a url. image.php?img=1 is just a local file-system-only request

$file = 'http://example.com/image.php?img=1'; // full-blown HTTP request
$file = 'image.php'; // local-only request

But this is somewhat inefficient, since you're doing a full-blown http round-trip request. if that url is password/session protected, you'll have to "log in" first, etc...

If that image is coming from a local database, then you should recreate the fetching logic or make it usable via function call so that it doesn't do the HTTP request, and simply works "internally" within your script, and then pass the data to GD's imagecreatefromstring(), which'll accept any known image type, then use the imagesx() and imagesy() functions to get the height/width.

于 2012-06-10T18:41:05.533 回答
1

您需要 file_get_contents 因为image.php?img=1它不是您系统上的真实文件

$cont = file_get_contents($file);
$r = imagecreatefromstring($cont);
imagesx($r);
imagerx($r);

当然你需要完整的 URL:http://etc

于 2012-06-10T18:40:20.747 回答