Home >Backend Development >PHP Tutorial >求PHP生成缩略图的功能,该怎么解决

求PHP生成缩略图的功能,该怎么解决

WBOY
WBOYOriginal
2016-06-13 10:18:15938browse

求PHP生成缩略图的功能
求PHP生成缩略图的功能!

从网上找了一段代码,生成的缩略图色彩失真。

------解决方案--------------------
31.$image1=$info['filename'].'120_120'.'.' .$info['extension'];//缩略图名称
32.$image2=$info['filename'].'300_300'.'.' .$info['extension'];//缩略图名称
33.list($imagw,$imagh)=getimagesize($file ['tmp_name']);//取得原图的宽高(另外$file ['tmp_name']只是一个临时文件路径,有时可能 会报错,如报错只需把临时文件路径改成你上传 后的原图的路径即可)
34.//120图判断各种情况来取得缩略图的宽高
35.if($imagw36.$m120w=$imagw;
37.$m120h=$imagh;
38.}elseif($imagw>$imagh)
39.{
40.$m120w=120;
41.$m120h=intval($m120w/number_format( $imagw/$imagh,2));//缩略图的宽除以(原 图的宽除以原图的高)number_format查手册
42.}
43.else
44.{
45.$m120h=300;
46.$m120w=intval($m120h/number_format( $imagh/$imagw,2));//缩略图的高除以(原图 的高除以原图的宽)number_format查手册
47.}
48.//300图判断各种情况来取得缩略图的宽高
49.if($imagw50.$m300w=$imagw;
51.$m300h=$imagh;
52.}elseif($imagw>$imagh){
53.$m300w=300;
54.$m300h=intval($m300w/number_format( $imagw/$imagh,2));//缩略图的宽除以(原 图的宽除以原图的高)number_format查手册
55.}else{
56.$m300h=300;
57.$m300w=intval($m300h/number_format( $imagh/$imagw,2));//缩略图的高除以(原 图的高除以原图的宽)number_format查手册
58.}
59.if($info['extension']=='jpg'){
60.$info['extension']='jpeg';//判断图像类 型如果是JPG的则把它转换成JPEG的因为图像处 理函数在处理JPG的时候都是用的JPEG而不是JPG
61.}
62.$iml='imagecreatefrom'.$info['extension'];
63.//取得不同图片格式的不同函数
64.$yuan=$iml($file['tmp_name']);
65.//根据前面取的不同函数来取的原图的标识
66.$mu1=imagecreatetruecolor($m120w,$m120h);
67.//取的要生成的缩略图的标识
68.$mu2=imagecreatetruecolor($m300w,$m300h);
69.//取的要生成的缩略图的标识
70.$c='image'.$info['extension'];
71.//生成输出缩略图的函数,不能分开写,否则报错
72.imagecopyresampled($mu1,$yuan,0,0,0, 0,$m120w,$m120h,$imagw,$imagh);//生成缩略图120
73.$res=$c($mu1,$xin.'/'.$image1);
74.//存放缩略图
75.if(!$res){
76.alert('生成120缩略图失败');
77.exit;
78.}
79.imagecopyresampled($mu2,$yuan,0,0 ,0,0,$m300w,$m300h,$imagw,$imagh);
80.//PHP生成缩略图生成缩略图120
81.$res=$c($mu2,$xin.'/'.$image2);
82.//存放缩略图
83.if($res){
84.alert('生成300缩略图成功');
这里只列出了一部分代码,具体的参考:http://www.phpnewer.com/index.php/Ymgx/detail/id/38
------解决方案--------------------
试下这个
1.2./*后台登陆界面
3.*黄春龙学习编写
4.*首写时间:2009-10-27
5.*更新时间:2009/11/24
6.*/
7.require_once '../xmphp/init.php';
8.//全站配置文件
9.require_once XMPHP_COMMON.'/smarty.php';
10.//smarty功能
11.require_once XMPHP_COMMON.'/mysql.php';
12.//mysql功能
13.require_once XMPHP_COMMON.'/func.php';
14.//常用函数
15.if(isset($_GET['act'])&&$_GET['act'] =='upload'){
16.$file=$_FILES['file'];
17.$info=pathinfo($file['name']);
18.$a=array('jpg','gif','png');
19.if(!in_array($info['extension'],$a)){
20.alert("请选择jpg,gif,png格式的图片 进行上传");
21.exit;
22.}
23.if($file['name'] !=''){
24.$dirname=date('Ym');
25.$dirname='../upload/'.$dirname;
26.//原图路径
27.$xin=$dirname.'/s';//PHP生成缩略图路径
28.if(!file_exists($xin)){
29.@mkdir($xin);
30.}
31.$image1=$info['filename'].'120_120'.'.' .$info['extension'];//缩略图名称
32.$image2=$info['filename'].'300_300'.'.' .$info['extension'];//缩略图名称
33.list($imagw,$imagh)=getimagesize($file ['tmp_name']);//取得原图的宽高(另外$file ['tmp_name']只是一个临时文件路径,有时可能 会报错,如报错只需把临时文件路径改成你上传 后的原图的路径即可)
34.//120图判断各种情况来取得缩略图的宽高
35.if($imagw36.$m120w=$imagw;
37.$m120h=$imagh;
38.}elseif($imagw>$imagh)
39.{
40.$m120w=120;
41.$m120h=intval($m120w/number_format( $imagw/$imagh,2));//缩略图的宽除以(原 图的宽除以原图的高)number_format查手册
42.}
43.else
44.{
45.$m120h=300;
46.$m120w=intval($m120h/number_format( $imagh/$imagw,2));//缩略图的高除以(原图 的高除以原图的宽)number_format查手册

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn