Ошибка при создании эскизов в PHP

Это мой код для создания эскизов. Здесь я пытаюсь проверить, существует ли эскиз. Если это будет отображаться напрямую. Кроме того, эскиз создается, а затем отображается.

<a rel="colorbox" title=" " href="new/artists/data/single_image.php?imageid=<?php echo $rowa_image['product_image_id']; ?>" target="_blank">
 <!--<img src="new/images/upload/<?php echo $image; ?>" alt="" border="0" />-->
 <!--?php
 $addr = $_SERVER['HOME'];
 echo '<script--> alert("'.$addr.'"); ';
 /*$pathToImages = "../new/images/upload/";
 $pathToThumbs = "../new/images/upload/thumbs/";*/
 $pathToImages = "../new/images/upload/";
 $pathToThumbs = "../new/images/upload/thumbs/";
 $thumbWidth = 100;
 $filename = $pathToThumbs . $image;
 //check if thumbnail exists
 if(file_exists($filename)){ 
 //display thumbnail
 ?>
 
 <!--?php
 }
 else{
 //create thumbnail
 createThumbs($pathToImages, $pathToThumbs, $thumbWidth, $image);
 //createThumbs("new/images/upload/","new/images/upload/thumbs/",100);
 ?-->
 
 <!--?php
 }
 } 
 ?-->
 </a>
 <!--</div>-->
 
<!--?php } } } ?-->




<!--?php 

//thumbnail creation 
function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth, $image ) 
{
// open the directory
//$dir = opendir( $pathToImages );
$dir = fopen($pathToImages, "rw");
/* read the source image */
$file = $pathToImages . $image;
//echo '<script--> alert("'.$file.'"); ';
$source_image = imagecreatefromjpeg($pathToImages);
//$source_image = imagecreatefromjpeg( "{$pathToImages}{$image}" );

$width = imagesx($source_image);
$height = imagesy($source_image);

/* find the "desired height" of this thumbnail, relative to the desired width */
$desired_height = floor($height * ($thumbWidth / $width));

/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor($thumbWidth, $desired_height);

/* copy source image at a resized size */
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $thumbWidth, $desired_height, $width, $height);

/* create the physical thumbnail image to its destination */
//imagejpeg($virtual_image, $pathToThumbs);
imagejpeg($virtual_image, "{$pathToThumbs}{$image}");
}
?>

Вышеприведенный код дает мне следующую ошибку, которую я не знаю, как ее решить. Я думаю, что путь к файлу - проблема. Но я не уверен, что именно неправильно.

Warning: fopen(../new/images/upload/) [
function.fopen
]: failed to open stream: No such file or directory in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 107

Warning: imagecreatefromjpeg(../new/images/upload/) [
function.imagecreatefromjpeg
]: failed to open stream: No such file or directory in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 111

Warning: imagesx() expects parameter 1 to be resource, boolean given in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 114

Warning: imagesy() expects parameter 1 to be resource, boolean given in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 115

Warning: Division by zero in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 118

Warning: imagecreatetruecolor() [
function.imagecreatetruecolor
]: Invalid image dimensions in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 121

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 124

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 128

Когда я использовал функцию opendir, это дало мне следующую ошибку:

function.imagecreatefromjpeg
]: failed to open stream: No such file or directory in /home/artistiv/public_html/new/publicprofile/artist_image.php on line 110
2 ответа

Ошибка не требует пояснений:

  • Вы находитесь на /home/artistiv/public_html/new/publicprofile/artist_image.php
  • Вы просите открыть ../new/images/upload/ который равен /home/artistiv/public_html/new/new/images/upload/
  • Там нет такого файла или каталога

Вы также используете флагов rw - я не могу найти их в списке возможных режимов:

  • r только открыто для чтения
  • w только открыто для записи

Как PHP мог делать обе вещи одновременно?


Ваш путь к файлу выглядит как /home/artistiv/public_html/new/publicprofile/

Там для ваших переменных Path должны быть установлены так:

$ pathToImages = "../images/upload/"; $ pathToThumbs = "../images/upload/thumbs/";

или

$ pathToImages = "../../new/images/upload/"; $ pathToThumbs = "../../new/images/upload/thumbs/";

licensed under cc by-sa 3.0 with attribution.