gpt4 book ai didi

php - imagejpeg - 无法打开流

转载 作者:行者123 更新时间:2023-12-03 18:38:54 25 4
gpt4 key购买 nike

我使用函数 resizeImage() 来调整图像大小,但 偶尔 失败。大多数时候它都在工作,但有时我会收到无法找到文件的警告。应该是什么问题?如何解决这个问题?

想法:

  • 文件权限
  • 图片路径错误
  • session
  • 写入目录的权限

  • 用法:
    <?php

    session_start();

    define('DS', DIRECTORY_SEPARATOR);
    define('ROOT_DIR', realpath(dirname(__FILE__)) . DS);

    $image = ROOT_DIR . 'cache' . DS . $_SESSION['file_name'];
    resizeImage($image, 400, 400);

    throw 错误:
    Warning: imagejpeg(C:\wamp\www\mvc\cache\temp_1385972631.jpg): failed to open stream: Invalid argument in C:\wamp\www\mvc\application\helpers\image_helper.php on line 95

    第 95 行: imagejpeg($newImage, $image, 100);
    这是 resizeImage() 功能:
    <?php

    function resizeImage($image, $max_width, $max_height) {

    $img = getimagesize($image);

    $mime = $img['mime'];
    $width = $img[0];
    $height = $img[1];

    if ($height > $width) {
    $scale = $max_height / $height;
    }
    elseif ($width > $height) {
    $scale = $max_width / $width;
    }
    else {
    $scale = 1;
    }

    $newImageWidth = ceil($width * $scale);
    $newImageHeight = ceil($height * $scale);
    $newImage = imagecreatetruecolor($newImageWidth, $newImageHeight);
    imagealphablending($newImage, false);
    imagesavealpha($newImage, true);
    switch ($mime) {
    case "image/gif":
    $source = imagecreatefromgif($image);
    break;
    case "image/pjpeg":
    case "image/jpeg":
    case "image/jpg":
    $source = imagecreatefromjpeg($image);
    break;
    case "image/png":
    case "image/x-png":
    $source = imagecreatefrompng($image);
    break;
    }
    imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newImageWidth, $newImageHeight, $width, $height);

    switch ($mime) {
    case "image/gif":
    imagegif($newImage, $image);
    break;
    case "image/pjpeg":
    case "image/jpeg":
    case "image/jpg":
    imagejpeg($newImage, $image, 100); // line #95
    break;
    case "image/png":
    case "image/x-png":
    imagepng($newImage, $image);
    break;
    }

    chmod($image, 0777);
    return $image;
    }

    编辑:
    在 imagejpeg($newImage, $image, 100) 之前添加 var_dump;//第 102 行
    //var_dump($newImage);
    resource(18) of type (gd)

    //var_dump($image);
    string(41) "C:\wamp\www\mvc\cache\temp_1385978306.jpg"

    Warning: imagejpeg(C:\wamp\www\mvc\cache\temp_1385978306.jpg): failed to open stream: Invalid argument in C:\wamp\www\mvc\application\helpers\image_helper.php on line 102

    最佳答案

    我有同样的问题。
    可能是因为您没有创建名为“缓存”的文件夹。
    (似乎 GD 不创建目录,并假定该目录是之前创建的并且具有所需的权限(例如 0777)。)

    关于php - imagejpeg - 无法打开流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324302/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com