PHP如何让上传的大文件变小 如果上传一个图片,图片是数码相机照的图片,图片很大,很占系统空间,如何能让上传的图片变小。不用客户更改,不加上传限制,直接通过程序员代码的填写,直接让图片的大小减小.谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在百度搜索:图片上传生成缩略图 php推荐一个链接:http://hi.baidu.com/supsea/blog/item/55f47ebf3927a90618d81f3b.html 好的PHP上传文件大小都是在php.ini中设置的。如果做小图,就要把上传的图压缩一下就可以了。但是长宽也相应的小了。 自己写程序生产小图。gd或者imagick都可以 做缩略图imagecreatefromjpegimagecreatetruecolorimagecopyresampledimagejpeg ACDSEE输出质量调到85%,然后重新保存。 <?PHP/*$source_img = "../base_img/index.jpg";$target_dir='../base_img/';$new_width=500;$new_height=500;$if_cut=0;$target_name='HanroadClass';$img=new HanroadClass;$img->HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut); */class HanroadClass { /**//********************** 利用PHP的GD库生成缩略图。 支持图片格式:jpg,gif,png $source_img: 源图象完整路径 $target_dir: 目标图象目录 $target_name: 目标图象名称 $new_width: 目标图象宽 $new_height: 目标图象高 $if_cut: 是否裁图 1(裁图): 裁图则按设置的大小生成目标图象 0(不裁): 不裁则按比例生成目标图象 **********************/ function HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut) { //图片类型 $img_type = strtolower(substr(strrchr($source_img,"."),1)); //图象的完整目标路径 $tar_url = $target_dir."/".$target_name.".".$img_type; //初始化图象 if($img_type=="jpg")$temp_img = imagecreatefromjpeg($source_img); if($img_type=="gif")$temp_img = imagecreatefromgif($source_img); if($img_type=="png")$temp_img = imagecreatefrompng($source_img); //原始图象的宽和高 $old_width = imagesx($temp_img); $old_height = imagesy($temp_img); //改变前后的图象的比例 $new_ratio = $new_width/$new_height; $old_ratio = $old_width/$old_height; //生成新图象的参数 //情况一:裁图 则按设置的大小生成目标图象 if($if_cut=="1"){ $new_width = $new_width; $new_height = $new_height; //高度优先 if($old_ratio>=$new_ratio){ $old_width = $old_height*$new_ratio; $old_height = $old_height; }else{//宽度优先 $old_width = $old_width; $old_height = $old_width/$new_ratio; } }else{//情况二:不裁图 则按比例生成目标图象 $old_width = $old_width; $old_height = $old_height; //高度优先 if($old_ratio>=$new_ratio) { $new_width = $new_width; $new_height = $new_width/$old_ratio; }else{//宽度优先 $new_width = $new_height*$old_ratio; $new_height = $new_height; } } //生成新图片 $new_img = imagecreatetruecolor($new_width,$new_height); if($img_type=="gif"){ imagealphablending($new_img, false); imagesavealpha($new_img, true); } if($img_type=="png"){ imagesavealpha($temp_img,true); imagealphablending($new_img,false); imagesavealpha($new_img,true); } imagecopyresampled($new_img,$temp_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height); if($img_type=="jpg")imagejpeg($new_img,$tar_url); if($img_type=="gif"){ $bgcolor=imagecolorallocate($new_img,0,0,0); $bgcolor=imagecolortransparent($new_img,$bgcolor); $bgcolor=imagecolorallocatealpha($new_img, 0, 0, 0,127); imagefill($new_img, 0, 0, $bgcolor); imagegif($new_img,$tar_url); } if($img_type=="png")imagepng($new_img,$tar_url); imagedestroy($source_img); imagedestroy($new_img); } } ?> 用php实现把各种文件转换成pdf文件 做了两年以上PHP的进来下 php fast cgi 模式有的 函数执行速度很慢 求助 get和set的知识 PHP的FCK编辑器在火狐下不能用 PHP调试,在断点处不停止的问题 gd显示中文要怎样设置才行? 问个问题,谢谢各位 请给一个简单的例子,实现单窗口登陆,如果关闭此ie则退出 php汉字乱码问题!其他问题已经按时结贴,望各位不吝指教! 高手!急救! webservice! 大家好~新来的
imagecreatefromjpeg
imagecreatetruecolor
imagecopyresampled
imagejpeg
<?PHP
/*
$source_img = "../base_img/index.jpg";
$target_dir='../base_img/';
$new_width=500;
$new_height=500;
$if_cut=0;
$target_name='HanroadClass';
$img=new HanroadClass;
$img->HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut);
*/
class HanroadClass
{
/**//**********************
利用PHP的GD库生成缩略图。
支持图片格式:jpg,gif,png
$source_img: 源图象完整路径
$target_dir: 目标图象目录
$target_name: 目标图象名称
$new_width: 目标图象宽
$new_height: 目标图象高
$if_cut: 是否裁图
1(裁图): 裁图则按设置的大小生成目标图象
0(不裁): 不裁则按比例生成目标图象
**********************/
function HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut) {
//图片类型
$img_type = strtolower(substr(strrchr($source_img,"."),1));
//图象的完整目标路径
$tar_url = $target_dir."/".$target_name.".".$img_type;
//初始化图象
if($img_type=="jpg")$temp_img = imagecreatefromjpeg($source_img);
if($img_type=="gif")$temp_img = imagecreatefromgif($source_img);
if($img_type=="png")$temp_img = imagecreatefrompng($source_img);
//原始图象的宽和高
$old_width = imagesx($temp_img);
$old_height = imagesy($temp_img);
//改变前后的图象的比例
$new_ratio = $new_width/$new_height;
$old_ratio = $old_width/$old_height;
//生成新图象的参数
//情况一:裁图 则按设置的大小生成目标图象
if($if_cut=="1"){
$new_width = $new_width;
$new_height = $new_height;
//高度优先
if($old_ratio>=$new_ratio){
$old_width = $old_height*$new_ratio;
$old_height = $old_height;
}else{//宽度优先
$old_width = $old_width;
$old_height = $old_width/$new_ratio;
}
}else{//情况二:不裁图 则按比例生成目标图象
$old_width = $old_width;
$old_height = $old_height;
//高度优先
if($old_ratio>=$new_ratio) {
$new_width = $new_width;
$new_height = $new_width/$old_ratio;
}else{//宽度优先
$new_width = $new_height*$old_ratio;
$new_height = $new_height;
}
}
//生成新图片
$new_img = imagecreatetruecolor($new_width,$new_height);
if($img_type=="gif"){
imagealphablending($new_img, false);
imagesavealpha($new_img, true);
}
if($img_type=="png"){
imagesavealpha($temp_img,true);
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
}
imagecopyresampled($new_img,$temp_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height);
if($img_type=="jpg")imagejpeg($new_img,$tar_url);
if($img_type=="gif"){
$bgcolor=imagecolorallocate($new_img,0,0,0);
$bgcolor=imagecolortransparent($new_img,$bgcolor);
$bgcolor=imagecolorallocatealpha($new_img, 0, 0, 0,127);
imagefill($new_img, 0, 0, $bgcolor);
imagegif($new_img,$tar_url);
}
if($img_type=="png")imagepng($new_img,$tar_url);
imagedestroy($source_img);
imagedestroy($new_img);
}
}
?>