我在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);