我从这里获得了一个代码http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php来获取用户调整尺寸后发送的图像。

这是发送图像时的处理方式。

            include('image_resize.php');
            $image = new SimpleImage();
            $image->load($upload_dir.$filename);
            $image->resizeToWidth(190);
            $image->save($upload_dir.$filename);

这是image_resize.php的一部分:

function resizeToWidth($width) {
  $ratio = $width / $this->getWidth();
  $height = $this->getheight() * $ratio;
  $this->resize($width,$height);
}
function resize($width,$height) {
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
    $this->image = $new_image;
}      

我不会粘贴所有代码,因为直到这里一切正常为止。

事实是,当直接从手机相机上传照片时,我遇到了方向问题,所以我这样写:

function resize($width,$height) {
    $exif = exif_read_data($this->image, 0, true);
    if(!empty($exif['IFD0']['Orientation'])) {
        switch($exif['Orientation']) {
            case 3: // 180 rotate left
            $this->image = imagerotate($this->image, 180, 0);
            break;

            case 6: // 90 rotate right
            $this->image = imagerotate($this->image, -90, 0);
            break;

            case 8: // 90 rotate left
            $this->image = imagerotate($this->image, 90, 0);
            break;
        }
    }
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}      

但是当我运行它时,服务器会说:

exif_read_data() expects parameter 1 to be string, resource given in /home/…/public_html/image_resize.php on line 101

这是第101行: $exif = exif_read_data($this->image, 0, true);

我已经搜索了exif_read_data()问题,但是我找不到“给定的资源”的含义,正如我在其他问题和文档中看到的那样,您可以使用临时图像作为参数。

所以问题是:我该如何处理$image->this以使其不被视为资源?

===============>>#1 票数:0 已采纳

$this->image是一个图像资源,由诸如imagecreatetruecolor()类的函数创建,该图像代表图像。 对于您的exif函数,您必须指定(字符串)文件名。

所以它应该看起来像:

function load($filename) {

  $this->filename = $filename;
  // ...
}

function resize($width,$height) {
   $exif = exif_read_data($this->filename, 0, true);
   // ...
}

  ask by fksr86 translate from so

未解决问题?本站智能推荐:

2回复

exif_read_data()读取的部分EXIF数据已损坏

当我使用exif_read_data()从原始文件读取EXIF数据时,很多数据都被破坏了。 还是我想。 我要读取的文件是Pentax Kx相机的DNG Raw文件。 这是一个演示: http : //server.patrikelfstrom.se/exif/? file= _IGP
2回复

php exif_read_data错误?

我正在使用php构建的某些软件。 适用于汽车经销商网站。 rpnmotorsinc.net 问题是能够上传图像。 如果我上载大多数jpg或jpeg文件,则通常可以正常上传。 由于我的客户不想调整尺寸/重新保存图像,因此他希望直接将佳能相机中的照片拍摄到计算机上以上传到网站,而无需重
5回复

PHP exif_read_data非法的IFD大小

我正在开发一个应用程序,我在其中修改从AWS桶下载的jpeg文件的方向(如果存在)。 在这里,您可以验证此图像是否具有exif旋转部分。 我下载图像 在我尝试通过Gregwar Image库修复方向之后。 我尝试了几个图像,我总是收到消息 我认为这是一个与我如
3回复

PHP:exif_read_data()未定义

我现在正在学习如何从图像中提取exif。我写了这样的简单代码: 但是,运行代码时,未定义的exif_read_data()存在致命错误。 我是一个Windows用户,我已经像这样修改了php.ini: 谢谢你的帮助。
1回复

exif_read_data:关键字解码错误

我正在使用exif_read_data()从上传的图片中提取exif数据。 这在我的Windows机器上运行良好,但在装有最新XAMPP的Mac上,除关键字/标记外,似乎所有字段均已正确提取。 如果我在文件中查找,则相机模型(已正确提取)以ASCII编码(似乎每个字符一个字节)。 但是,关
1回复

PHP exif_read_data():无法打开文件查询

我正在尝试通过EXIF DateTime Original对图​​像文件数组进行排序,使用stat()替换mtime对图像进行排序的原始代码。 用于按mtime对图像文件进行排序的原始代码如下: 我已经测试了以下代码,可以根据需要对数组进行排序: 但是,当我尝试使用以下代码
2回复

PHP exif_read_data不再提取GPS位置

我刚刚通过自制软件安装了composer,brew似乎安装了新版本的php(5.6.24)。 从那时起,使用exif_read_data提取其他元数据(模型,曝光,iso等),但不再从照片中提取“GPSLatitude”等GPS信息。 我通过exiftool(独立的非php程序)运行相同
2回复

exif_read_data - APP1 Exif标识符代码不正确

当我想阅读EXIF数据时,我的一些照片有问题。 我的代码如下: 对于一些图像,我得到warrning:消息:exif_read_data(001.jpg)[function.exif-read-data]:不正确的APP1 Exif标识符代码 我的问题是:我怎样才能解除这种警
2回复

依赖exif_read_data()的代码停止产生预期的输出

我有一个photoblog,可从我的图像( http://php.net/manual/en/function.exif-read-data.php )中打印出EXIF信息。 一直很好,直到今天。 它只是停止打印数据。 我尚未对文件进行任何更改。 图像位于wordpress上传文
1回复

从exif_read_data()的结果中提取注释属性

如何从exif_read_data返回comment属性 链接: http://www.php.net/manual/zh/function.exif-read-data.php