【问题标题】:Check if image is empty php检查图像是否为空php
【发布时间】:2014-01-10 04:19:45
【问题描述】:

我正在尝试制作一个 php 脚本来获取用户图片,但是当我返回的图像为空时,它应该返回标准图像。这是我的代码不起作用...

<?php
if (isset($_GET['user']))
{
$user = $_GET['user'];
$skinURL = "http://s3.amazonaws.com/MinecraftSkins/".$user.".png";
} 
$debugImage = imagecreatefrompng("http://s3.amazonaws.com/MinecraftSkins/".$user.".png");
if (empty($debugImage)) // here it checks if $debugImage is empty (doesn't work)
{
    $skinURL = 'http://www.minecraft.net/images/char.png';
}
$skin = imagecreatefrompng($skinURL);
?>

有什么想法吗?

编辑 1: 如果存在,则链接返回图像,如果不存在,则返回任何内容。已经感谢您的回答!

【问题讨论】:

  • 尝试使用静态网址,例如:http://s3.amazonaws.com/MinecraftSkins/user.png
  • 也许 imagecreatefrompng 不返回空变量。你能检查一下 $debugImage 的长度吗?
  • 空图是什么意思?
  • 您的意思是某种白色图像?还是根本没有图像?
  • @LordVoldemort 如果图像不存在,它不会返回任何图像。

标签: php image is-empty


【解决方案1】:

没有“空图像”之类的东西。即使是空白图像,仍然存在相同颜色的像素,很难将其归类为“空”。相反,为什么不检查文件是否存在?

function c_file_exists($file){
    $file_headers = @get_headers($file);
    if(strpos($file_headers[0], '404 Not Found')) {
        return false;
    }
    return true;
}
if (!c_file_exists("http://s3.amazonaws.com/MinecraftSkins/".$user.".png"))
{
    $skinURL = 'http://www.minecraft.net/images/char.png';
}

来源:http://www.php.net/manual/en/function.file-exists.php#75064

编辑

我编辑了函数的条件以使用不同版本的 HTTP,因为 2 现已推出,有人可能仍在使用 1.0

【讨论】:

  • 好吧,当用户不存在时,实际上根本就没有图像,但仍然感谢您的回复! (对不起,我的 cmets 这么晚了)
【解决方案2】:

这里需要注意两点:

首先,ensure allow_url_fopen is enabled 在您的环境设置中

其次,添加检查以确保远程文件存在。您可以发出 curl 请求来执行此操作。或者使用他的回答中提到的 php_nub_qq 方法。

更好的是,在调用 imagecreatefrompng 之前将远程图像复制到您的服务器。看看this thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多