0

我正在尝试将各种图像上传到服务器上动态创建的文件夹中,然后获取每个图像并调整其大小,同时将其上传到文件夹中,并创建新图像和新名称。。例如:image.jpg(原始图像)和image-resized.jpg。

我搞不懂的是如何调整所有图像的大小。我不确定我是否应该把它放在一个循环中。我所需要的是我上传的每一张图片(每次可能5张)。它遍历并调整所有图像的大小,而不仅仅是单个图像。这是我的代码,任何帮助都将不胜感激!

创建文件夹并将图片移动到这些文件夹中的代码:

//所需的文件夹结构$structure=“/福托斯/’$新文件夹;//要创建嵌套结构,$recursive参数//必须指定到mkdir()。if(!mkdir($structure,0,true)){die('创建文件夹失败…');}其他{$placefoldername=mysql_query(“INSERT INTO datefolders(FolderDate)VALUES('$newfolder')”)或die(mysql_error());echo“El文件夹fue agregado con exito.<input type=\”button\“name=\”close\“value=\”X\“class=\”lose\“/></div>”;}}// ...}if(isset($_POST['upload']){$FolderDate=$_POST['fecha-folder'];$FolderName=$_POST['FolderName'];$hour=$_POST['hour'];//所需的文件夹结构$structure=“/福托斯/’$文件夹日期。“/”$小时。“/”$文件夹名称;//要创建嵌套结构,$recursive参数//必须指定到mkdir()。对于($i=0;$i<count($_FILES['fileupload']['name'])$i++){$names=$_FILES['fileupload']['name'][$i];$target_path=“Fotos/”$文件夹日期。"/".$小时。"/".$文件夹名称。"/";$target_path=$target_path。基本名称($_FILES['filipload']['name'][$i]);if(move_uploaded_file($_FILES['fileupload']['tmp_name'][$i],$target_path)){$success=1;

创建较小(调整大小后的图像)并放入已创建文件夹的代码:

$img=$个名称;$imgPath=$结构;函数resizeImage($img、$imgPath、$suffix、$by、$quality){//通过调整图片大小创建缩略图//打开原始图像。$original=imagecreatefromjpeg(“$imgPath/$img”)或die(“错误打开原始文件(<em>$imgPath/$img</em>)”);列表($width、$height、$type、$attr)=获取图像大小(“$imgPath/$img”);//确定新的宽度和高度。$newWidth=($width/$by);$newHeight=($height/$by);//重新对图像采样。$tempImg=imagecreatetruecolor($newWidth,$newHeight)或die(“Cant create temp image”);imagecopyresized($tempImg,$original,0,0,0,0,$newWidth,$newHeight,$width,$height)或die(“无法调整副本大小”);//创建新文件名。$newNameE=爆炸(“.”,$img);$newName=“”$newNameE[0].''$后缀“.”$newNameE[1]。“”;//保存图像。imagejpeg($tempImg,“$imgPath/$newName”,$quality)或die(“无法保存图像”);//清理干净。imagedestroy($original);imagedestroy($tempImg);返回true;}$resize=resizeImage($img,$imgPath,“-resized”,23100);
2
  • 您的函数声明实际上是在foreach循环中,还是复制/粘贴错误?如果它在循环中,那么您将遇到一个双函数定义错误。
    – 科尔宾
    评论 2012年3月2日20:20
  • 错了!!刚脱下来:P 评论 2012年3月2日21:31

2个答案2

重置为默认值
1

为什么要定义函数调整图像大小在中对于循环?每次循环迭代时都会重新定义它。这可能是问题的一部分。定义循环外的函数,看看是否有效。

2
  • 对不起,我刚把它取下来……它只是我在玩的东西,在发布之前忘了把它取下。 评论 2012年3月2日20:33
  • 1
    我想出来了!!!我需要将函数从for循环中取出,然后只调用for循环中的函数。无论如何,谢谢大家! 评论 2012年3月2日22:43
0

你可以试试;

当您的第一张图像处理结束使用时图像销毁()然后将处理第二个图像。

1
  • 我已经在原始图像和临时图像上使用了imagedestroy。。我是否也应该将其添加到$img和$imgPath??非常感谢! 评论 2012年3月2日21:30

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.