无法使用php

时间:2017-09-27 14:54:50

标签: php image

我有一个PHP代码来获取图像并调整大小。无法按预期获得输出。请帮我弄清楚确切的问题是什么.. !!

<?php
$picture_source = 'image.png';
if ($picture_source != null){
  $img1=file_get_contents($picture_source);
  $new_img1 = resizeImage($img1, 200, 200);
  file_put_contents("i1.png", $new_img1);
}

function resizeImage($img,$newwidth,$newheight) {
  list($width, $height) = getimagesizefromstring($img);
  $thumb = imagecreatetruecolor($newwidth, $newheight);
  imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  return $thumb;
}

1 个答案:

答案 0 :(得分:0)

您对变量名称和类型感到困惑。您正在尝试同时处理文件名,文件内容和图像资源,并且您正在使用错误的函数来处理一些函数。

imagecopyresampled需要两个图像资源(源和目标),但您传递的是文件内容而不是源代码。

file_put_contents获取文件内容的字符串,但是您将调整大小的图像资源。

PHP具有用于读取图像尺寸和从文件名创建图像资源的本机函数,因此您不需要将源文件内容作为字符串提供。

如果更改了一些变量名称和函数调用,最终会得到:

<?php
$sourceFilename = 'image.png';

if ($sourceFilename != null){
  $newImg = resizeImage($sourceFilename, 200, 200);
  imagepng($newImg, "i1.png");
}

function resizeImage($imgFilename, $newWidth, $newHeight) {
  list($width, $height) = getimagesize($imgFilename);

  $img = imagecreatefrompng($imgFilename);
  $thumb = imagecreatetruecolor($newWidth, $newHeight);

  imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

  return $thumb;
}

此外,您应该在开发环境中打开PHP通知和警告 - 他们一直在努力为您提供帮助。