上传一个图片时,同时生成二个缩略图(一个比另一个大一些),怎么实现?
<?$upload_file=$_FILES["img"]["name"];//获取文件名$upload_tmp_file_1=$_FILES["img"]["tmp_n...
<?
$upload_file=$_FILES["img"]["name"]; //获取文件名
$upload_tmp_file_1=$_FILES["img"]["tmp_name"]; //获取临时文件名
$upload_tmp_file=$_FILES["img"]["tmp_name"]; //获取临时文件名
$upload_filetype=$_FILES["img"]["type"]; //获取文件类型
$upload_size=$_FILES["img"]["size"]; //获取文件大小
$upload_status=$_FILES["img"]["error"]; //获取文件出错情况
//定义允许上传的文件扩展名
$ext_arr = array('jpg');
$temp_arr = explode(".", $upload_file);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
$size2_1 = @getimagesize($upload_tmp_file);
$size2 = @getimagesize($upload_tmp_file);
//下面生成第一个310大小的缩略图
if(is_uploaded_file($upload_tmp_file_1) )
{
$upload_file_1 = $time."_1.".$file_ext;
$upload_path_1=$dir."/".$upload_file_1; //定义文件最终的存储路径和名称
if(move_uploaded_file($upload_tmp_file_1,$upload_path_1)){
$image_p_1 = imagecreatetruecolor($srcW_1, $srcH_1);
$image_1 = imagecreatefromjpeg($upload_path_1);
imagecopyresampled($image_p_1, $image_1, 0, 0, 0, 0, $srcW_1, $srcH_1, 310, 310);
imagejpeg($image_p_1,$upload_path_1);
}}
//再生成第二个大小为620的缩略图
if(is_uploaded_file($upload_tmp_file) )
{
$upload_file = $time.".".$file_ext;
$upload_path=$dir."/".$upload_file; //定义文件最终的存储路径和名称
if(move_uploaded_file($upload_tmp_file,$upload_path)){
$image_p = imagecreatetruecolor($srcW, $srcH);
$image = imagecreatefromjpeg($upload_path);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $srcW, $srcH, 620, 620);
imagejpeg($image_p,$upload_path);
}
}
//虽然重复了二步,但只生成了第一个缩略图,第二个没有生成,不知为什么,删除生成第一个缩略图的代码,又能生成第二个的,不知为什么不能同时生成二个,如何实现?
?> 展开
$upload_file=$_FILES["img"]["name"]; //获取文件名
$upload_tmp_file_1=$_FILES["img"]["tmp_name"]; //获取临时文件名
$upload_tmp_file=$_FILES["img"]["tmp_name"]; //获取临时文件名
$upload_filetype=$_FILES["img"]["type"]; //获取文件类型
$upload_size=$_FILES["img"]["size"]; //获取文件大小
$upload_status=$_FILES["img"]["error"]; //获取文件出错情况
//定义允许上传的文件扩展名
$ext_arr = array('jpg');
$temp_arr = explode(".", $upload_file);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
$size2_1 = @getimagesize($upload_tmp_file);
$size2 = @getimagesize($upload_tmp_file);
//下面生成第一个310大小的缩略图
if(is_uploaded_file($upload_tmp_file_1) )
{
$upload_file_1 = $time."_1.".$file_ext;
$upload_path_1=$dir."/".$upload_file_1; //定义文件最终的存储路径和名称
if(move_uploaded_file($upload_tmp_file_1,$upload_path_1)){
$image_p_1 = imagecreatetruecolor($srcW_1, $srcH_1);
$image_1 = imagecreatefromjpeg($upload_path_1);
imagecopyresampled($image_p_1, $image_1, 0, 0, 0, 0, $srcW_1, $srcH_1, 310, 310);
imagejpeg($image_p_1,$upload_path_1);
}}
//再生成第二个大小为620的缩略图
if(is_uploaded_file($upload_tmp_file) )
{
$upload_file = $time.".".$file_ext;
$upload_path=$dir."/".$upload_file; //定义文件最终的存储路径和名称
if(move_uploaded_file($upload_tmp_file,$upload_path)){
$image_p = imagecreatetruecolor($srcW, $srcH);
$image = imagecreatefromjpeg($upload_path);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $srcW, $srcH, 620, 620);
imagejpeg($image_p,$upload_path);
}
}
//虽然重复了二步,但只生成了第一个缩略图,第二个没有生成,不知为什么,删除生成第一个缩略图的代码,又能生成第二个的,不知为什么不能同时生成二个,如何实现?
?> 展开
1个回答
展开全部
$upload_tmp_file这是上传到服务器的缓存文件!
在使用move_uploaded_file之后该文件就删除了!
先生成620的图片
然后使用:copy函数复制该图
然后再使用imagecopyresampled生成310的图片!
在使用move_uploaded_file之后该文件就删除了!
先生成620的图片
然后使用:copy函数复制该图
然后再使用imagecopyresampled生成310的图片!
追问
不懂这些啊,能帮写成代码吗?我直接复制可用,谢谢
追答
内容超过了999个字符,我只粘贴个大概吧:
$upload_file=$_FILES["img"]["name"]; //获取文件名
$upload_tmp_file=$_FILES["img"]["tmp_name"]; //获取临时文件名
$upload_filetype=$_FILES["img"]["type"]; //获取文件类型
$upload_size=$_FILES["img"]["size"]; //获取文件大小
$upload_status=$_FILES["img"]["error"]; //获取文件出错情况
//定义允许上传的文件扩展名
$ext_arr = array('jpg');
//文件拓展名
$temp_arr = explode(".", $upload_file);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
if(!in_array($file_ext,$ext_arr))
die("文件格式错误");
$size = @getimagesize($upload_tmp_file);
//生成第一个大小为620的缩略图
if(is_uploaded_file($upload_tmp_file) )
{
$upload_file = time().".".$file_ext;
$upload_path="./".$upload_file; //定义文件最终的存储路径和名称
if(move_uploaded_file($upload_tmp_file,$upload_path)){
//直接覆盖自己
$ifn = $upload_path;
$ofn = $upload_path;
$source = imagecreatefromjpeg($ifn);
$sourceWidth = imagesx($source);
$sourceHeight = imagesy($source);
$thumbWidth = 620;
$thumbHeight = 620;
$thumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresampled($thumb,
$source,
0,
0,
0,
0,
$thumbWidth,
$thumbHeight,
$sourceWidth,
$sourceHeight
);
imagejpeg($thumb, $ofn);
}
}
//生成第二个大小为310的缩略图
具体看我博客!http://hi.baidu.com/amenmen/blog/item/6b45382c6c3504f18b1399fb.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询