如何使用phpthumb在上传时制作缩略图



我在phpthumb中遇到了一个非常有问题的错误:http://phpthumb.gxdlabs.com/所以基本上,我有一个上传个人资料图片的表格。上传似乎有效,因为它上传了目录中的图像。问题是它不会生成缩略图,但我确信所有的变量和名称都是正确的。它给了我以下错误。特别是"找不到图像文件":

Fatal error: Uncaught exception 'Exception' with message 'Image file not found: ����' in {PATH}phpthumbThumbBase.inc.php:193 Stack trace: #0 {PATH}phpthumbThumbBase.inc.php(172): ThumbBase->triggerError('Image file not ...') #1 {PATH}phpthumbThumbBase.inc.php(110): ThumbBase->fileExistsAndReadable() #2 {PATH}phpthumbGdThumb.inc.php(96): ThumbBase->__construct('??????JFIF?????...', false) #3 G:EasyPHPwwwYourSlabphpthumbThumbLib.inc.php(127): GdThumb->__construct('??????JFIF?????...', Array, false) #4 {PATH}edit_profile.php(74): PhpThumbFactory::create('??????JFIF?????...') #5 {PATH}edit_profile.php(80): generateThumbnail->createthumbnail(25) #6 {PATH}edit_profile.php(118): set_profile_info('Mico Abrina', '1', 'asdf', 'asdf', '', 'asdf', 'asdf', '', '05', '4', '1996', 'G:EasyPHPtmp...') #7 {main} thrown in {PATH}phpthumbThumbBase.inc.php on line 193

我认为这是因为我在上传后立即生成缩略图。我该如何使其工作

<?php
    //upload images
    if (file_exists($profile_pic)) {
        $src_size = getimagesize($profile_pic); 
        if ($src_size['mime'] === 'image/jpeg'){
            $src_img = imagecreatefromjpeg($profile_pic);   
        } else if ($src_size['mime'] === 'image/png') {
            $src_img = imagecreatefrompng($profile_pic);
        } else if ($src_size['mime'] === 'image/gif') {
            $src_img = imagecreatefromgif($profile_pic);    
        } else {
            $src_img = false;   
        }
        if ($src_img !== false) {
            $md5sessionid = md5($_SESSION['user_id'].'asdf');
            imagejpeg($src_img, "profile_pic/$md5sessionid.jpg");
            //end of uploading images
            //image thumbnail creation class
            class generateThumbnail {
                public function createthumbnail($size) {
                $md5sessionidsecret = md5($_SESSION['user_id'].'asdf');
                $md5sessionidthumb = md5($md5sessionidsecret.''.$size);
                $path_to_thumb_pic = 'profile_pic/'.$md5sessionidthumb.'.jpg';
                $profile_pic = file_get_contents('profile_pic/'.$md5sessionidsecret.'.jpg');
                $thumb_profile_pic = PhpThumbFactory::create($profile_pic);
                $thumb_profile_pic->adaptiveResize($size, $size);
                $thumb_profile_pic->save($path_to_thumb_pic);
                }
            }
            //make the thumbnails
            $createThumbnail = new generateThumbnail();
            $createThumbnail->createthumbnail(25);
            $createThumbnail->createthumbnail(75);
            $createThumbnail->createthumbnail(175);
        }
    }
?>

除非为第三个isDataStream参数指定true,否则PhpThumbFactory::create()似乎将文件路径作为其第一个参数。这就是为什么在异常中得到奇怪的输出,它显示Image File Not Found

你可以做一些事情来修复它:

// Either skip the file_get_contents call and pass the file path directly
$thumb_profile_pic = PhpThumbFactory::create('profile_pic/'.$md5sessionidsecret.'.jpg');
// or set the 3rd parameter isDataStream to true
$profile_pic = file_get_contents('profile_pic/'.$md5sessionidsecret.'.jpg');
$thumb_profile_pic = PhpThumbFactory::create($profile_pic, array(), true);