【问题标题】:Force resize and convert any image while uploading上传时强制调整大小并转换任何图像
【发布时间】:2015-02-23 20:08:05
【问题描述】:

我想在上传时强制调整大小并转换任何图像。(?)

if ( $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" || $_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" ) 
    {
      if ($_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" || $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" ) 
      {
      $file=$_FILES["ufile"]["tmp_name"];
      list($width, $height) = getimagesize($file);
        $new_width = 200;
        $new_height = 500;
      $dst_image = imagecreatetruecolor($new_width,$new_height);
        $src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);
        imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

      imagejpeg(imagecreatefromstring(file_get_contents($dst_image)), "convert.jpg");
       $actual_image_name = $name[$i].'.'.'jpg';
       move_uploaded_file("convert.jpg", $path.$actual_image_name);
      }

【问题讨论】:

  • 有什么问题?
  • 结果没有上传图片

标签: php image upload resize


【解决方案1】:

我可以看到的一个问题是(缺少数组索引):

$file=$_FILES["ufile"]["tmp_name"];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);

您在那里缺少索引,因此当您尝试获取维度时,结果将不是您期望的那样。

你需要:

$file=$_FILES["ufile"]["tmp_name"][$i];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"][$i]);

除此之外,您还应该启用错误处理和显示,以便您可以轻松发现此类问题。您可以通过在脚本顶部添加类似这样的内容来做到这一点:

ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);

编辑:

您不应该在不是文件上传的文件上使用move_uploaded_file(),您还需要使用您刚刚为imagejpeg函数的第一个参数生成的图像资源:

$actual_image_name = $name[$i].'.'.'jpg';
imagejpeg($dst_image, $path.$actual_image_name);

【讨论】:

  • 错误报告是这个 注意:未定义的变量:C:\apache2triad\htdocs\pppp\admin\upload.php 中的文件名第 56 行警告:move_uploaded_file(../data1/images/): failed打开流:第 56 行 C:\apache2triad\htdocs\pppp\admin\upload.php 中的权限被拒绝警告:move_uploaded_file(): Unable to move 'C:\apache2triad\temp\php9CE1.tmp' to '../第 56 行 C:\apache2triad\htdocs\pppp\admin\upload.php 中的 data1/images/'
  • 当我使用它来将任何图片转换为 jpg 时,代码是正确的,但是当我输入调整大小的代码时,结果是这样的。
  • ok .. 图片已上传,但尺寸仍与来源相同
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 1970-01-01
  • 2015-10-10
  • 2020-06-14
  • 1970-01-01
相关资源
最近更新 更多