【问题标题】:Get image type, PHP获取图片类型,PHP
【发布时间】:2012-03-22 03:38:38
【问题描述】:

我试图弄清楚如何在 PHP 中将图像类型设置为变量。我需要从数据库中提取图像,找到它的图像类型并显示它。目前它只显示jpg的。

上传代码为:

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') {
    $tempext = explode('.', $_FILES['image']['name']);
    $tempext = strtolower($tempext[count($tempext) - 1]);
    switch($tempext) {
        case 'jpg':
        case 'jpeg':
            $ext = '.jpg';
            break;
        case 'gif':
            $ext = '.gif';
            break;
        case 'png':
            $ext = '.png';
            break;
        default:
            $ext = false;
    }
    if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) {
        $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no';
    } else {
        $imagesuccess = 'no';
    }
}

编辑:

我已经取得了一些进展,主要是清理了一些愚蠢的错误,但我仍然没有任何图像出现。

这是更新后的开关盒:

switch ($ext) { 
            case 'jpg':
            case 'jpeg':
                $ext = '.jpg';
                break;
            case 'gif':
                $ext = '.gif';
                break;
            case 'png':
                $ext = '.png';
        }

和图像放置:

if(!file_exists($_SERVER['DOCUMENT_ROOT'] . $imgurl . 'profiles/' . $r['id'] . $ext)) {
                    echo '<img src="' . $imgurl . 'profiles/unavailable.gif" id="profile-big-img" />' . PHP_EOL;
                } else {
                    echo '<p><img class="profileimg" src="' . $imgurl . 'profiles/' . $r['id'] . $ext . 'id="profile-big-img" alt="' . $r['forename'] . ' ' . $r['surname'] . (($r['course'] == 'graphics') ? ' Graphic Design' : ' Illustration') . '" /></p>' . PHP_EOL;
                }

【问题讨论】:

  • 您有没有机会查看生成的 HTML?
  • 演出时 $tempext 来自哪里?
  • 我建议立即关闭此类问题,因为缺少生成的 HTML。任何理智的社区都会接受它。当然不是这个。
  • 是的,目前我收到一个警告:“警告:exif_imagetype() [function.exif-imagetype]:/Applications/XAMPP/xamppfiles/htdocs/gdi/ 中的文件名不能为空profile.php on line 174" 我猜是指$exifType 变量中的['temp_name']?我不是 PHP 开发人员,所以调试这个有点任务。
  • 如果我取出变量和switch语句,jpg显示正常,gif和png显示为不可用.gif

标签: php


【解决方案1】:

最可靠的方法是使用FileInfo

【讨论】:

  • 恐怕他不需要文件类型检测,但对他的代码有一点常识(就像这个上帝保佑网站上的任何其他问题一样)。
【解决方案2】:

当代码有点奶油时,很难追踪问题;)

让我们先从命令行检查您的图像有什么问题:

a) 打开终端 b) cd 到带有图像的目录(可能是 web 目录) c) 运行这个 (copy +past + Enter)

 php -r  ' $dh= opendir(".");while(($file=readdir($dh))!==false){ if(!is_dir($file)){ $tp=exif_imagetype($file);echo "$file:  =====> $tp\n"; } } '

输出会是这样的:

...
error.JPG:  =====> 2
features.JPG:  =====> 2
kunfu_panda.jpg:  =====> 2
.....

将代码与 php 提供的 Imagetype Constants 进行比较。

这将是解决问题的第一步。

【讨论】:

  • 好的,目前有 2 种图像类型:IMG_JPGIMG_GIF。还没有人上传IMG_PNGIMG_JPEG,但我假设它会在未来的某个时候发生。
  • 抱歉,Imagetype 常量是IMAGETYPE_GIFIMAGETYPE_JPG,而不是IMG_
【解决方案3】:

您可以使用pathinfo 函数进行检查。我很确定它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2017-06-30
    • 2013-10-04
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2013-09-26
    • 2012-06-16
    相关资源
    最近更新 更多