图像缩略图创建黑色背景

时间:2012-03-28 07:58:36

标签: php image

这是一个非常典型的创建缩略图的脚本。为什么它一直在输出黑色画布而不是我试图指定的白色?我错过了一些完全明显的东西吗?

<?php

$image = 'images/original/' . $_GET['image'];

$thumb = "images/thumbs/t_" . $_GET['image'];

$size = 220;

square_crop($image, $thumb, $size);

function square_crop($src_image, $dest_image, $thumb_size, $jpg_quality = 100) 
{

    // Get dimensions of existing image
    $image = getimagesize($src_image);

    // Check for valid dimensions
    if( $image[0] <= 0 || $image[1] <= 0 ) return false;

    // Determine format from MIME-Type
    $image['format'] = strtolower(preg_replace('/^.*?\//', '', $image['mime']));

    // Import image
    switch( $image['format'] ) {
        case 'jpg':
        case 'jpeg':
            $image_data = imagecreatefromjpeg($src_image);
        break;
        case 'png':
            $image_data = imagecreatefrompng($src_image);
        break;
        case 'gif':
            $image_data = imagecreatefromgif($src_image);
        break;
        default:
            // Unsupported format
            return false;
        break;
    }

    // Verify import
    if( $image_data == false ) return false;

    // Calculate measurements
    if( $image[0] & $image[1] ) {
        // For landscape images
        $x_offset = ($image[0] - $image[1]) / 2;
        $y_offset = 0;
        $square_size = $image[0] - ($x_offset * 2);
    } else {
        // For portrait and square images
        $x_offset = 0;
        $y_offset = ($image[1] - $image[0]) / 2;
        $square_size = $image[1] - ($y_offset * 2);
    }

//$im = imagecreatetruecolor(100, 100);

// sets background to red
//$red = imagecolorallocate($im, 255, 0, 0);
//imagefill($im, 0, 0, $red);

    // Resize and crop
    $canvas = imagecreatetruecolor($thumb_size, $thumb_size);

    //make the background white
    $white = imagecolorallocate($canvas, 255, 255, 255);
    imagefill($canvas, 0,0, $white);

    if( imagecopyresampled(
        $canvas,
        $image_data,
        0,
        0,
        $x_offset,
        $y_offset,
        $thumb_size,
        $thumb_size,
        $square_size,
        $square_size)) 
    {

        // Create thumbnail
        switch( strtolower(preg_replace('/^.*\./', '', $dest_image)) ) {
            case 'jpg':
            case 'jpeg':
                return imagejpeg($canvas, $dest_image, $jpg_quality);
            break;
            case 'png':
                return imagepng($canvas, $dest_image);
            break;
            case 'gif':
                return imagegif($canvas, $dest_image);
            break;
            default:
                // Unsupported format
                return false;
            break;
        }

    } else {
        return false;
    }

}

?>

0 个答案:

没有答案
相关问题