Пакетная папка изображений в оттенках серого с использованием php - PullRequest
0 голосов
/ 12 марта 2010

Может кто-нибудь определить, где я иду не так здесь. Следует создавать копии изображений в оттенках серого в одной папке и сохранять их в другой папке. Может быть, это связано с тем, как я ссылаюсь на расположение файлов. Права доступа к папкам для обеих папок - 777. Скрипт работает без видимой ошибки, но изображения не создаются

function grayscalecopy($targetfile, $outputfile){
$size = GetImageSize($targetfile);
$width = $size[1];
$height = $size[0];
$canvas = imagecreatetruecolor($width, $height);
$sourceimage = imagecreatefromjpeg($targetfile);
imagefilter($sourceimage, IMG_FILTER_GRAYSCALE);
imagecopy($canvas, $sourceimage, 0, 0, 0, 0, $width, $height);
imagejpeg($canvas, $outputfile, 95);
imagedestroy($sourceimage);
imagedestroy($canvas);
echo "Converted ".$targetfile." to grayscale as ".$outputfile." ".$width."x".$height."<br/>";
}

$serverfiles = glob("artworkimages/thumbs/*.*");
//$numbertocache = count($serverfiles);
$numbertocache = 10;
for ($i=0; $i<$numbertocache; $i++)
{
    $serverfilesshort=explode("/",$serverfiles[$i]);
    $serverfilesshort=$serverfilesshort[count($serverfilesshort)-1];
    grayscalecopy($serverfiles[$i], "artworkimages/thumbs/grays/".$serverfilesshort);
}

1 Ответ

1 голос
/ 12 марта 2010

Проверка результата вызова imagejpeg. Измените свой код на:

$result = imagejpeg($canvas, $outputfile, 95);
if($result)
{
    echo "Converted ".$targetfile." to grayscale as ".$outputfile." ".$width."x".$height."<br/>";
}
else
{
    echo "Could not save to $outputfile.<br>"
    if(!is_writable($outputfile)
        echo "The path was not writable";
}
imagedestroy($sourceimage);
imagedestroy($canvas);

Это поможет нам увидеть, что происходит. Если вы получили «Путь не для записи», попробуйте использовать абсолютные пути вместо относительных путей, например:

grayscalecopy($serverfiles[$i], dirname(__FILE__)."/artworkimages/thumbs/grays/".$serverfilesshort);
...