简体   繁体   English

上传后创建缩略图,PHP

[英]Create thumbnail after upload, PHP

I have implemented a file upload for pictures on my page, and tried to somehow generate thumbnails with the intention of clicking them to view via fancybox. 我已经为页面上的图片实现了文件上传,并尝试以某种方式生成缩略图,以便单击它们以通过fancybox进行查看。 The upload works but my function to create a thumbnail doesn't. 上传有效,但我创建缩略图的功能无效。 (This is included in my upload.php, right after "move_uploaded_file": (这是在“ move_uploaded_file”之后的我的upload.php中包含的:

<?php
$src = $subdir.$fileupload['name'];

function make_thumb($src) 
{

$source_image = imagecreatefromjpeg($src);    //For testing purposes only jpeg now
$width = imagesx($source_image);
$height = imagesy($source_image);
$desired_width = 220;

$desired_height = floor($height * ($desired_width / $width));

$virtual_image = imagecreatetruecolor($desired_width, $desired_height);

imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);

header("Content-type: image/jpeg");
imagejpeg($virtual_image, realpath('./Thumbnails/filename.jpg'));    //Temporary filename, will be changed
}
?>

Just FYI, this is an assignment and since I am a php beginner, I did use google, but can't find the problem in my case. 仅供参考,这是一项任务,由于我是php初学者,所以我确实使用过google,但在我的情况下找不到问题。 Maybe my understanding of php is lacking too much. 也许我对php的了解太少了。

Use this img_resize function, it is good for the most popular image formats 使用此img_resize函数,适用于最受欢迎的图像格式

   function img_resize($src, $dest, $width, $height, $rgb = 0xFFFFFF, $quality = 100)
   {
        if (!file_exists($src))
            return false;

        $size = getimagesize($src);

        if ($size === false)
            return false;

        $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
        $icfunc = "imagecreatefrom" . $format;
        if (!function_exists($icfunc))
            return false;

        $x_ratio = $width / $size[0];
        $y_ratio = $height / $size[1];

        $ratio = min($x_ratio, $y_ratio);
        $use_x_ratio = ($x_ratio == $ratio);

        $new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
        $new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
        $new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
        $new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

        $isrc = $icfunc($src);
        $idest = imagecreatetruecolor($width, $height);

        imagefill($idest, 0, 0, $rgb);

        if (($format == 'gif') or ($format == 'png')) {
            imagealphablending($idest, false);
            imagesavealpha($idest, true);
        }

        if ($format == 'gif') {
            $transparent = imagecolorallocatealpha($idest, 255, 255, 255, 127);
            imagefilledrectangle($idest, 0, 0, $width, $height, $transparent);
            imagecolortransparent($idest, $transparent);
        }

        imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);

        getResultImage($idest, $dest, $size['mime']);

        imagedestroy($isrc);
        imagedestroy($idest);

        return true;
    }

    function getResultImage($dst_r, $dest_path, $type)
    {
        switch ($type) {
            case 'image/jpg':
            case 'image/jpeg':
            case 'image/pjpeg':
                return imagejpeg($dst_r, $dest_path, 90);
                break;
            case 'image/png';
                return imagepng($dst_r, $dest_path, 2);
                break;
            case 'image/gif';
                return imagegif($dst_r, $dest_path);
                break;
            default:
                return;
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM