问题描述
我在使用phpthumb时出现了一个非常有问题的错误:
所以基本上,我有一个上传个人资料图片的表格。上传似乎有效,因为它上传了目录中的图像。问题是它不会生成缩略图,但我确信所有变量和名称都是正确的。它给了我以下错误。特别是'未找到图像文件':
I'm having a very problematic error with phpthumb: http://phpthumb.gxdlabs.com/So basically, I have a form which uploads a profile picture. The uploading seems to work because it uploads the image in the directory. The problem is that it doesn't generate the thumbnails but I'm sure that all the variables and names are correct. It gives me the following error. Specifically 'Image file not found':
Fatal error: Uncaught exception 'Exception' with message 'Image file not found: ����' in {PATH}\phpthumb\ThumbBase.inc.php:193 Stack trace: #0 {PATH}\phpthumb\ThumbBase.inc.php(172): ThumbBase->triggerError('Image file not ...') #1 {PATH}\phpthumb\ThumbBase.inc.php(110): ThumbBase->fileExistsAndReadable() #2 {PATH}\phpthumb\GdThumb.inc.php(96): ThumbBase->__construct('??????JFIF?????...', false) #3 G:\EasyPHP\www\YourSlab\phpthumb\ThumbLib.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:\EasyPHP\tmp\...') #7 {main} thrown in {PATH}\phpthumb\ThumbBase.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);
}
}
?>
推荐答案
看来 PhpThumbFactory: :create()
将文件路径作为其第一个参数,除非为第三个 isDataStream指定
参数。这就是为什么你在异常中得到奇怪的输出,它说 true
找不到图像文件
。
It appears that PhpThumbFactory::create()
takes a file path as its first argument, unless you specify true
for the third isDataStream
argument. That is why you are getting the strange output in the exception where it says Image File Not Found
.
你可以做一些事情来解决它:
You could do a few things to fix it:
// 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);
这篇关于如何使用phpthumb上传缩略图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!