cakephp - 使用imagecreatefrompng()调试器错误

时间:2013-03-06 14:17:45

标签: php cakephp imagecreatefrompng

当我在控制器中的动作中使用imagecreatefrompng()时,我有一些代码会中断。我认为它不应该有所作为,但是在通过AJAX调用的动作中调用了imagecreatefrompng()。

$imgName='img/favicons/'.$saveFileName.'_large.png';
$img=imagecreatefrompng($imgName);

我很确定这条路是对的。在同一个操作中,我将文件保存到该文件夹​​,但是我返回了以下错误:

  

警告:get_class()期望参数1为对象,资源在 C:\ xampp \ htdocs \ cakephp \ lib \ Cake \ Utility \ Debugger.php 中给出在线 578

     

警告:get_object_vars()要求参数1为对象,资源在 C:\ xampp \ htdocs \ cakephp \ lib \ Cake \ Utility \ Debugger.php 中给出在线 584

debugger.php文件中的错误指向处理对象到字符串转换的特定函数,以及导致错误的行:

$className = get_class($var);
$objectVars = get_object_vars($var);

任何人都有任何想法出了什么问题?感谢

编辑:

这是函数的代码

public function saveSiteFavicon() {
    $this->layout = 'ajax';
    $url = $this->request->data['websiteurl'];
    $saveFileName = parse_url($url);
    $saveFileName = $saveFileName['host'];
    $saveFileName = str_replace('.', '', $saveFileName);
    $saveFileName = str_replace('www', '', $saveFileName);
    $this->Favicon->recursive = 0;
    $faviconexists = $this->Favicon->findByImage($saveFileName.'.png');
    if(!empty($faviconexists)) {
        echo $saveFileName.'.png:'.$faviconexists['Favicon']['id'];
    } else {
        $fp = fopen ('img/favicons/'.$saveFileName.'.png', 'w+');
        $ch = curl_init('http://g.etfv.co/'.$url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 6);
        /* Save the returned data to a file */
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
        //if the favicon is oversized resize it
        $faviconFileName = 'img/favicons/'.$saveFileName.'.png';
        $metaData=getimagesize($faviconFileName);
        if($metaData[1] > 16) {
            rename($faviconFileName, 'img/favicons/'.$saveFileName.'_large.png');
            $imgName='img/favicons/'.$saveFileName.'_large.png';
            $thumbName='img/favicons/'.$saveFileName.'.png';
            $img=imagecreatefrompng($imgName);

            $imgThumb=imagecreatetruecolor(16,16);
            imagecopyresampled($imgThumb,$img,0,0,0,0,16,16,$metaData[0],$metaData[1]);
            imagepng($imgThumb, $thumbName);
            imagedestroy($imgThumb);
        }
        $this->Favicon->create();
        $this->Favicon->save(array('image'=>$saveFileName.'.png'));
        $faviconid = $this->Favicon->getLastInsertId();
        echo $saveFileName.'.png:'.$faviconid;
    }
}

在视图中我只是通过ajax调用此函数并提醒结果,这是我看到错误消息的地方。

$.post("../favicons/saveSiteFavicon", {websiteurl: value})
                .done(function(data) {
                    alert(data);
            });

1 个答案:

答案 0 :(得分:1)

错误消息基本上告诉你问题;

$img是'资源',不是Object或'简单'数据类型(字符串/整数等)。无法调试资源。您可以使用var_dump(),但这可能只会提供resource #123之类的内容。使用此功能可以调试资源的“类型”;

debug(get_resource_type($img));

但是,查看代码时,您已经预计会成为“图片”,如果FALSE失败则会imagecreatefrompng():)

有关'资源'的更多信息; http://php.net/manual/en/language.types.resource.php