PHP:警告:imagejpeg无法打开流

时间:2018-01-01 16:43:47

标签: php xml

我有以下脚本:

    <?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文件夹但我总是得到这个错误...所以一些帮助或提示将是受欢迎的...谢谢

1 个答案:

答案 0 :(得分:0)

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

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

因此无效参数警告。

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

构造文件名的外观示例

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

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