目录
用php生成上传图片的缩略图问题
php
请看代码:
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] ($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] ($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不解释
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
1 个月前
By DDD
R.E.P.O.最佳图形设置
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
1 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前
By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu
