我有一个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;
}
答案 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通知和警告 - 他们一直在努力为您提供帮助。