开发者

Create Thumbnails on the fly

开发者 https://www.devze.com 2023-02-23 08:36 出处:网络
The code I have below works fine on localhost but does not create thumbnails on live server. <?php $orig_directory = \"../imagefolder\";//Full image folder

The code I have below works fine on localhost but does not create thumbnails on live server.

<?php

$orig_directory = "../imagefolder";    //Full image folder
$thumb_directory =  "../imagefolder/thumbfolder";    //Thumbnail folder

/* Opening the thumbnail directory and looping through all the thumbs: */
$dir_handle = @opendir($orig_directory); //Open Full image dirrectory
if ($dir_handle > 1){ //Check to make sure the folder opened

$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;

while ($file = @readdir($dir_handle)) {
    /* Skipping the system files: */
    if($file=='.' || $file == '..') continue;

    $file_parts = explode('.',$file);    //This gets the file name of the images
    $ext = strtolower(array_pop($file_parts));

    /* Using the file name (withouth the extension) as a image title: */
    $title = implode('.',$file_parts);
    $title = htmlspecialchars($title);

    /* If the file extension is allowed: */
    if(in_array($ext,$allowed_types)) {

        /* If you would like to inpute images into a database, do your mysql query here */

        /* The code past here is the code at the start of the tutorial */
        /* Outputting each image: */

        $nw = 100;
        $nh = 100;
        $source = "../imagefolder/{$file}";
        $stype = explode(".", $source);
        $stype = $stype[count($stype)-1];
        $dest = "../imagefolder/thumbfolder/{$file}";

        $size = getimagesize($source);
        $w = $size[0];
        $h = $size[1];

        switch($stype) {
            case 'gif':
                $simg = imagecreatefromgif($source);
                break;
            case 'jpg':
                $simg = imagecreatefromjpeg($source);
                break;
            case 'png':
                $simg = imagecreatefrompng($source);
                break;
        }

        $dimg = imagecreatetruecolor($nw, $nh);
        $wm = $w/$nw;
        $hm = $h/$nw;
        $h_height = $nh/2;
        $w_height = $nw/2;

        if($w> $h) {
            $adjusted_width = $w / $hm;
            $half_width = $adjusted_width / 2;
            $in开发者_运维知识库t_width = $w / $hm;
            imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
        } else {
            imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
        }
            imagejpeg($dimg,$dest,100);
        }
}

/* Closing the directory */
@closedir($dir_handle);

}
?>

<?php //echo "Thumbnails succesfully created ";
header("Refresh: 0; url=display_thumbs.php");
?>

anybody have any idea what is worng with the code.


Sounds like you need to look at your file permissions. Make sure the folder with the images and this file have permission to write.


Is your PHP on the live server compiled against GD-1.8 or later? It is required to use:

imagecreatefromjpeg
imagecreatefromgif
imagecreatefrompng
0

精彩评论

暂无评论...
验证码 换一张
取 消