【问题标题】:PHP: Warning: imagejpeg failed to open streamPHP:警告:imagejpeg 无法打开流
【发布时间】:2018-01-01 16:43:46
【问题描述】:

我有以下脚本:

    <?php
  /* include database informations */
   include 'config.php';

  /* MySQLi Connection */
  $mysqli = new mysqli($host, $user, $pass, $db);

  /* MySQLi Check */
    if ($mysqli->connect_errno) { printf('Connect Failed: %s\n', $mysqli->connect_error); exit(); }

  /* MySQLi Character */
  $mysqli->set_charset('utf8');

  libxml_use_internal_errors(true);

  /* Cinestar VZ */
  $rss = simplexml_load_file('http://www.blitz-cinestar.hr/rss.aspx?id=2128');

  /* Cinestar items */
  foreach($rss->channel->item as $item) {
    /* Cinestar Poster Character */
    $item->orignaziv = str_replace('&rsquo;', '', mb_convert_encoding($item->orignaziv, 'HTML-ENTITIES', "UTF-8"));
    $item->orignaziv = str_replace(': ', ' -', mb_convert_encoding($item->orignaziv, 'HTML-ENTITIES', "UTF-8"));

    /* Cinestar Poster */
    if (!file_exists('./img/'.$item->orignaziv.' ('.$item->godina.').jpg')) {

      $remote_file = $item->plakat;
      $new_width = 117;
      $new_height = 168;
      list($width, $height) = getimagesize($remote_file);
      $image_p = imagecreatetruecolor($new_width, $new_height);
      $image = imagecreatefromjpeg($remote_file);
      imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
      imagejpeg($image_p, './img/'.ucfirst($item->orignaziv).' ('.$item->godina.').jpg', 100);
      imagedestroy($image_p);
    }

    /* MySQLi update|insert */
    $cinestar = $mysqli->query("INSERT INTO cinestar (title, orignaziv, godina, redatelj, zanr, glumci, trajanje, rating, description, link, datumprikazivanja, trailer)
                                VALUES ('$item->title', '$item->orignaziv', '$item->godina', '$item->redatelj', '".ucfirst($item->zanr)."', '$item->glumci', '$item->trajanje', '$item->rating', '".strip_tags(substr($item->description, 0, strpos($item->description, '<a href')))."', '$item->link', '$item->datumprikazivanja', '".$item->trailer."')
                                ON DUPLICATE KEY UPDATE title='$item->title', godina='$item->godina', redatelj='$item->redatelj', zanr='".ucfirst($item->zanr)."', glumci='$item->glumci', trajanje='$item->trajanje', rating='$item->rating', description='".strip_tags(substr($item->description, 0, strpos($item->description, '<a href')))."', link='$item->link', datumprikazivanja='$item->datumprikazivanja', trailer='".$item->trailer."'");
  }

  /* MySQLi Close */
    $mysqli->close();
?>

请忽略 MySQL 的东西(它是整个脚本)并专注于从 url 读取图像的 PHP 代码调整大小并保存到 img 文件夹...运行脚本时出现此错误:

( ! ) Warning: imagejpeg(./img/Loving Vincent   (2017).jpg): failed to open stream: Invalid argument in D:\portal_ONLINE\UwAmp\www\filmovi_novi\inc\cinestar-rss.php on line 35

xml 在 url:

http://www.blitz-cinestar.hr/rss.aspx?id=2128

我不明白为什么它不起作用...我尝试手动将 vincent (2017).jpg 复制到 img 文件夹,但我总是收到此错误...所以欢迎提供一些帮助或提示...谢谢.

【问题讨论】:

    标签: php xml


    【解决方案1】:

    根据您的错误,您似乎正在尝试使用未正确转义的空格和特殊字符构造文件名。

    这会导致imagejpeg 无法打开流,因为提供的文件名格式无效。

    因此无效参数警告。

    尝试转义空格和大括号以使其正常工作。

    构造文件名的外观示例

    Loving\ Vincent\ \ \ \(2017\).jpg
    

    或者,您可以去掉空格和大括号。

    【讨论】:

    • 我试试:imagejpeg($image_p, mysql_escape_string('./img/'.ucfirst($item->orignaziv).' ('.$item->godina.').jpg') , 100);但我收到错误:注意:尝试获取非对象的属性
    • 能否请您复制上面的代码并删除 mysql 并尝试在您的服务器上运行脚本?我很确定这会得到同样的错误......
    • 尝试从您正在构建的文件名中删除空格和大括号。
    • 我现在删除了...按照您的建议...imagejpeg($image_p, './img/'.ucfirst($item->orignaziv).'('.$item->godina .').jpg', 100);但是是同样的错误...
    • 试试这个imagejpeg($image_p, mysql_escape_string('./img/'.str_replace(" ", "\ ",ucfirst($item-&gt;orignaziv)).'\ \('.$item-&gt;godina.'\).jpg'), 100);
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2017-12-29
    • 2019-09-25
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多