【问题标题】:Call to a member function resize() on a non-object in在非对象上调用成员函数 resize()
【发布时间】:2013-04-02 17:25:00
【问题描述】:

我使用脚本上传图片。

在我要创建缩略图的脚本中。

首先我制作一个副本,复制后我想调整副本的大小。

我有

$originalfile =//the file i just uploaded

$kopiefile = //the copy destination /same filename as original but with an extra dir added.

if (!copy($originalfile, $kopiefile)) {
    echo "failed to copy $originalfile...\n";
} else {
    $kopiefile = "http://mydomain.com/media/img/thumbs/".$file_name;
    echo $kopiefile;
    $kopiefile -> resize(300, 0, false);
}

复制文件有效,我可以看到新创建的文件。

echo $kopiefile 为我提供了一个直接指向图像的链接,如果我复制该链接,该链接将起作用。

但现在我到了

$kopiefile -> resize(300, 0, false);

部分,我得到了错误

致命错误:在 .... 第 176 行中对非对象调用成员函数 resize()

第 176 行在哪里

$kopiefile -> resize(300, 0, false);

我的代码有什么问题?

我也试过用:

$kopiefile = "/home/censored/domains/censored/public_html/ve/media/img/thumbs/".$file_name;

但它不起作用。

谁能帮帮我。

【问题讨论】:

    标签: php


    【解决方案1】:

    $kopiefile 只是一个字符串,而不是一个对象,因此不能有像$someobject->resize() 这样的成员函数。

    您必须将图片加载到具有某种调整大小方法的对象中。您现在正在做的是将文件的 url 放入字符串变量中。

    试试http://php.net/manual/en/function.imagecopyresized.php

    或者这个:http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/ 滚动到 SimpleImage 类代码的底部。 像这样使用它:

    <?php
       include('SimpleImage.php');
       $image = new SimpleImage();
       $image->load('picture.jpg');
       $image->resizeToWidth(250);
       $image->save('picture2.jpg');
    ?>
    

    【讨论】:

    • 什么是最简单的方法,因为我真的很喜欢 resize(300, 0, false); imagecopyresized 看起来需要额外的编码来保持图像的正确比例。
    • 您可以使用 -> 'tends to' 运算符仅访问类中的成员,在这里我看不到它是这样使用的。可能您可能想检查一下。
    • 没有别的办法,我真的不喜欢添加类,我想让一切尽可能简单。我不想在不需要的时候添加 105 条代码规则。
    • 我不知道除了 GD 库(提供 imagecopyresized() 函数的那个​​)之外的任何内置功能。您可以使用它,但正如您所说,它并不能完全满足您的要求,所以不幸的是,我认为添加一些代码是不可避免的。
    • 好的,我保存了 SimpleImage.php 类并添加了代码: $kopiefile = "mydomain/media/img/thumbs/".$file_name; echo $kopiefile; include('SimpleImage.php'); $image = new SimpleImage(); $image->load($originalfile); $image->resizeToWidth(250); $image->save($kopiefile); 但现在我收到错误警告:imagejpeg() [function.imagejpeg]: Unable to open 'mydomain .com/media/img/thumbs/13648963700veersel.PNG' 写作:没有这样的文件或目录...但是如果我复制不存在的url,图像就在那里。我使用了img的相对路径,现在它可以工作了
    【解决方案2】:

    看起来你正在使用simpleimage php 库。您必须先加载图像$image = SimpleImage('path.jpg');,然后$image-&gt;resize() 才能工作。先下载简单的图片再试试

    在这里下载:simpleimage

    【讨论】:

      【解决方案3】:

      $kopiefile 不是 object 并且没有方法 resize

      尝试使用https://code.google.com/p/ag-php-classes/wiki/ImagesHelperclass=)

      【讨论】:

        猜你喜欢
        • 2010-09-26
        • 2012-04-20
        • 2015-05-01
        • 2014-08-07
        • 2013-12-01
        • 2015-12-23
        • 2015-08-29
        • 2015-02-02
        • 2015-05-22
        相关资源
        最近更新 更多