Php kullanarak gri tonlama içine görüntülerin toplu klasör

1 Cevap php

Ben burada yanlış gidiyorum herkes nokta olabilir. Bu bir klasördeki görüntülerin gri tonlamalı kopyalar oluşturma ve başka bir klasöre kaydederek edilmelidir. Bu dosya konumlarını başvuran yolu im ile yapmak olabilir. Her iki klasörler Klasör izinleri 777 bulunmaktadır. Komut görünür hatasız çalışıyor ama hiçbir görüntü oluşturulmaktadır.

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 Cevap

imagejpeg çağrısının sonucu kontrol edin. Kodunuzu değiştirin:

$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);

Bu bize neler oluyor görmek yardımcı olacaktır. Eğer "yolu yazılabilir değil" alırsanız, örneğin, yerine göreli yollar mutlak yolları kullanmayı deneyin:

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