• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

用php生成上传图片的缩略图问题

php 搞代码 3年前 (2022-01-25) 23次浏览 已收录 0个评论
文章目录[隐藏]

请看代码:

list($maintype,$subtype)=explode("/", $_FILES['upload']['type']);		function set_thumb <i style="color:transparent">本文来源gaodai$ma#com搞$$代**码)网8</i><strong>搞代gaodaima码</strong>($width, $height) {      			$thumb_width  = $width;              	$thumb_height = $height;          	}     	//创建缩略图,以相同的扩展名生成缩略图          	//$src_file : 来源图像路径 , $thumb_file : 缩略图路径          	function create_thumb ($src_file,$thumb_file) {             		 $t_width  = $thumb_width;              	 $t_height = $thumb_height;              	if (!file_exists($src_file)) return false;              	$src_info = getImageSize($src_file);              	//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图,免去操作              	if ($src_info[0] <= $t_width && $src_info[1]  ($src_info[1]-$t_height)) {                  	$t_height = ($t_width / $src_info[0]) * $src_info[1];             	 	} else {                  	$t_width = ($t_height / $src_info[1]) * $src_info[0];              	}                       	switch ($subtype) {                  	case 'jpg' :                      	$src_img = ImageCreateFromJPEG($src_file); break;                  	case 'png' :                      	$src_img = ImageCreateFromPNG($src_file); break;                  	case 'gif' :                      	$src_img = ImageCreateFromGIF($src_file); break;              	}              	//创建一个真彩色的缩略图像              	$thumb_img = @ImageCreateTrueColor($t_width,$t_height);              	//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑              	if (function_exists('imagecopyresampled')) {                  	@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);              	} else {                  	@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);              	}              	//生成缩略图              	switch ($subtype) {                  	case 'jpg' :                      	ImageJPEG($thumb_img,$thumb_file); break;                  	case 'gif' :                     	 	ImageGIF($thumb_img,$thumb_file); break;                  	case 'png' :                      	ImagePNG($thumb_img,$thumb_file); break;              	}              	//销毁临时图像      			@ImageDestroy($src_img);              	@ImageDestroy($thumb_img);        	return true;          	}

我是这么调用的:

$upfile='uploads/'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);		$thumb_file='uploads/'.'thumb_'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);        if(is_uploaded_file($_FILES['upload']['tmp_name'])){						if(!move_uploaded_file($_FILES['upload']['tmp_name'], $upfile)){				echo "<script language='javascript'>";				echo "alert('不能移动到指定目录!');";				echo "window.history.go(-1);";				echo "</script>";				exit();			}			@unlink($_FILES['upload']['tmp_name']);			set_thumb(100,80);			if(create_thumb($upfile,$thumb_file)){				$thumbfile=$thumb_file;			}         ...//中间省略一些数据库操作代码

数据库里有缩略图的路径,但文件夹里面没有生成缩略图

回复内容:

请看代码:

list($maintype,$subtype)=explode("/", $_FILES['upload']['type']);		function set_thumb ($width, $height) {      			$thumb_width  = $width;              	$thumb_height = $height;          	}     	//创建缩略图,以相同的扩展名生成缩略图          	//$src_file : 来源图像路径 , $thumb_file : 缩略图路径          	function create_thumb ($src_file,$thumb_file) {             		 $t_width  = $thumb_width;              	 $t_height = $thumb_height;              	if (!file_exists($src_file)) return false;              	$src_info = getImageSize($src_file);              	//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图,免去操作              	if ($src_info[0] <= $t_width && $src_info[1]  ($src_info[1]-$t_height)) {                  	$t_height = ($t_width / $src_info[0]) * $src_info[1];             	 	} else {                  	$t_width = ($t_height / $src_info[1]) * $src_info[0];              	}                       	switch ($subtype) {                  	case 'jpg' :                      	$src_img = ImageCreateFromJPEG($src_file); break;                  	case 'png' :                      	$src_img = ImageCreateFromPNG($src_file); break;                  	case 'gif' :                      	$src_img = ImageCreateFromGIF($src_file); break;              	}              	//创建一个真彩色的缩略图像              	$thumb_img = @ImageCreateTrueColor($t_width,$t_height);              	//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑              	if (function_exists('imagecopyresampled')) {                  	@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);              	} else {                  	@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);              	}              	//生成缩略图              	switch ($subtype) {                  	case 'jpg' :                      	ImageJPEG($thumb_img,$thumb_file); break;                  	case 'gif' :                     	 	ImageGIF($thumb_img,$thumb_file); break;                  	case 'png' :                      	ImagePNG($thumb_img,$thumb_file); break;              	}              	//销毁临时图像      			@ImageDestroy($src_img);              	@ImageDestroy($thumb_img);        	return true;          	}

我是这么调用的:

$upfile='uploads/'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);		$thumb_file='uploads/'.'thumb_'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);        if(is_uploaded_file($_FILES['upload']['tmp_name'])){						if(!move_uploaded_file($_FILES['upload']['tmp_name'], $upfile)){				echo "<script language='javascript'>";				echo "alert('不能移动到指定目录!');";				echo "window.history.go(-1);";				echo "</script>";				exit();			}			@unlink($_FILES['upload']['tmp_name']);			set_thumb(100,80);			if(create_thumb($upfile,$thumb_file)){				$thumbfile=$thumb_file;			}         ...//中间省略一些数据库操作代码

数据库里有缩略图的路径,但文件夹里面没有生成缩略图

谢谢大家的回答 我后来检查了一遍代码发现是iconv(“utf8”, “UTF-8”, $_FILES[‘upload’][‘name’])这句代码惹的祸,它直接把图片的后缀名给去掉了,所以导致后面的create_thumb()函数不能成功生成缩略图,再次感谢大家的帮助。

imagick不解释


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:用php生成上传图片的缩略图问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址