【问题标题】:How to resize image using Gd library ? PHP如何使用 Gd 库调整图像大小? PHP
【发布时间】:2014-06-15 07:04:11
【问题描述】:

从客户端收到图片后,我想调整它的大小,然后存储它。 我正在使用这个功能:

function PIPHP_ImageResize($image, $w, $h)
{
         $oldw = imagesx($image);
         $oldh = imagesy($image);
         $temp = imagecreatetruecolor($w, $h);
         imagecopyresampled($temp, $image, 0, 0, 0, 0,
            $w, $h, $oldw, $oldh);
         return $temp;
}
$image = PIPHP_ImageResize($_FILES['file']['tmp_name'],10,10);
move_uploaded_file($image, $newname);

不幸的是,我收到了这些警告:

  1. 警告:imagesx() 期望参数 1 是资源,给定字符串...
  2. 警告:imagesy() 期望参数 1 是资源,给定字符串 ...
  3. 警告:imagecopyresampled() 期望参数 2 是资源,给定字符串 ...
  4. 警告:move_uploaded_file() 期望参数 1 为字符串,资源给定...

我该如何解决这个问题!!

【问题讨论】:

  • 您可能想阅读有关这些函数如何工作的文档,以及它们对参数的期望;甚至可以查看那些文档页面上的代码示例!
  • @Maerlyn ,我知道我没有给函数提供正确的参数,你可以从警告中看到(期望参数 1 是资源)但我不明白资源是什么?
  • 资源是使用正确的图像创建函数实例化的变量。

标签: php image gd


【解决方案1】:

imagesx 期望图像资源作为第一个参数。您必须使用适当的函数创建一个,例如 imagecreatefromjpegimagecreatefrompng

function PIPHP_ImageResize($image, $w, $h)
{
    $oldw = imagesx($image);
    $oldh = imagesy($image);
    $temp = imagecreatetruecolor($w, $h);
    imagecopyresampled($temp, $image, 0, 0, 0, 0, $w, $h, $oldw, $oldh);
    return $temp;
}

if (move_uploaded_file($_FILES['file']['tmp_name'], $newname)) {
    $uploadedImage = imagecreatefromjpeg($newname);
    if (!$uploadedImage) {
        throw new Exception('The uploaded file is corrupted (or wrong format)');
    } else {
        $resizedImage = PIPHP_ImageResize($uploadedImage,10,10);
        // save your image on disk
        if (!imagejpeg ($resizedImage, "new/filename/path")) {
              throw new Exception('failed to save resized image');
        }
    }
} else {
    throw new Exception('failed Upload');
}

我添加了一个最小的和不足错误处理,您应该检查例如上传文件的格式并使用适当的图像创建功能,或者检查上传的文件是否为图片。

附录

您可以使用getimagesize 函数确定假定上传的图像的类型。

getimagesize 返回一个数组。如果支持图像类型,则 array[2] 值返回图像的类型。如果文件不是图像,或者不支持其格式,则 array[0] 值为零。一旦您知道图像的文件格式,您就可以使用 imagecreatefromxxx 函数之一来创建适当的图像。

【讨论】:

  • 我正在使用许多图像文件... png,JPEG,JPG,x-png... 是否有适合所有类型图像的 imgaeCreate 功能...谢谢
  • @user3648409 我刚刚在答案中添加了一些关于确定文件格式的提示
  • PHP 文档建议使用 FileInfo 进行文件格式检测:php.net/manual/en/book.fileinfo.php
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2010-11-03
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多