主题: 图片大小解决的一个小办法
作者: badguy, 发布日期: 2010-04-23 17:23:17, 浏览数: 6651

php/upload_json.php文件
-------------------------------------研究研究,估计可以解决的了------今天刚解决图片大小,又发现文字不能自动换行,貌似要人命啊----------------------
<?php

/**
本PHP程序属于一个服务器端程序的例子,不正确的使用可能威胁服务器的安全,使用之前请仔细确认相关安全设置。
*/
function   makethumb($srcFile,$dstFile,$dstW,$dstH)   {    
  $data   =   GetImageSize($srcFile,&$info);    
  switch   ($data[2])   {    
  case   1:    
      $im   =   @ImageCreateFromGIF($srcFile);   //从目标图片中取出图形  
      break;    
  case   2:    
      $im   =   @imagecreatefromjpeg($srcFile);    
      break;    
  case   3:    
      $im   =   @ImageCreateFromPNG($srcFile);    
      break;    
  }    
   
   
  $srcW=ImageSX($im);   //取出图片的宽度  
  $srcH=ImageSY($im);   //取出图片的长度
   if($srcW>600){
  $dstW=600;
  $dstH=floor(600*$srcH/$srcW);
 }else{
  $dstW=$srcW;
  $dstH=$srcH;
 }
  $dstX=0;    
  $dstY=0;    
  if($srcW*$dstH>$srcH*$dstW)    
  {    
      $fdstH=round($srcH*$dstW/$srcW);    
      $dstY=floor(($dstH-$fdstH)/2);    
      $fdstW=$dstW;    
  }  
  else{    
      $fdstW=round($srcW*$dstH/$srcH);    
      $dstX=floor(($dstW-$fdstW)/2);    
      $fdstH=$dstH;  
      }    
  $ni=ImageCreate($dstW,$dstH);    
  $dstX=($dstX<0)?0:$dstX;    
  $dstY=($dstX<0)?0:$dstY;    
  $dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;    
  $dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;    
  $black   =   ImageColorAllocate($ni,0,0,0);//填充的背景色你可以重新指定,我用的是黑色    
  imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);    
  ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);    
  ImageJpeg($ni,$dstFile);//如果你要把图片直接输出到浏览器,    
  //那么把第二个参数去掉,并用header()函数指定mine类型先    
  imagedestroy($im);    
  imagedestroy($ni);  
 }  
  

//文件保存目录路径
$save_path = '../../upload/';
//文件保存目录URL
$save_url = '../../upload/';
//定义允许上传的文件扩展名
$ext_arr = array('gif', 'jpg', 'jpeg', 'png', 'bmp');
//最大文件大小
$max_size = 1000000;

//有上传文件时
if (empty($_FILES) === false) {
 //原文件名
 $file_name = $_FILES['imgFile']['name'];
 //服务器上临时文件名
 $tmp_name = $_FILES['imgFile']['tmp_name'];
 //文件大小
 $file_size = $_FILES['imgFile']['size'];
 //检查文件名
 if (!$file_name) {
  alert("请选择文件。");
 }
 //检查目录
 if (@is_dir($save_path) === false) {
  alert("上传目录不存在。");
 }
 //检查目录写权限
 if (@is_writable($save_path) === false) {
  alert("上传目录没有写权限。");
 }
 //检查是否已上传
 if (@is_uploaded_file($tmp_name) === false) {
  alert("临时文件可能不是上传文件。");
 }
 //检查文件大小
 if ($file_size > $max_size) {
  alert("上传文件大小超过限制。");
 }
 //获得文件扩展名
 $temp_arr = explode(".", $file_name);
 $file_ext = array_pop($temp_arr);
 $file_ext = trim($file_ext);
 $file_ext = strtolower($file_ext);
 //检查扩展名
 if (in_array($file_ext, $ext_arr) === false) {
  alert("上传文件扩展名是不允许的扩展名。");
 }
 //新文件名
 $new_file_name = date("YmdHms") . '_' . rand(10000, 99999) . '.' . $file_ext;

 //移动文件
 $file_path = $save_path . $new_file_name;
 if (move_uploaded_file($tmp_name, $file_path) === false) {
  alert("上传文件失败。");
 }
 @chmod($file_path, 0644);
 $file_url = $save_url . $new_file_name;
/*  
  ----------------------------------------------------  
          功能:自动生成图片缩略图  
  使用示例:makethumb($srcFile,$dstFile,$dstW,$dstH);  
  $srcFile   源文件    
  $dstFile   目标文件    
    $dstW   目标图象宽度    
  $dstH   目标图象高度    
   
  ----------------------------------------------------  
     */
  if(!empty($file_url))  
  {  
  $srcFile=$file_url;  
  $dstFile=$save_url .'a'. $new_file_name;

 

  /**/
  makethumb($srcFile,$dstFile,600,500);  
 
  }
 $file_url = './upload/a' . $new_file_name;
 header('Content-type: text/html; charset=UTF-8');
 echo json_encode(array('error' => 0, 'url' => $file_url));
 exit;
}

function alert($msg) {
 header('Content-type: text/html; charset=UTF-8');
 echo json_encode(array('error' => 1, 'message' => $msg));
 exit;
}
?>

发表新帖 发表回复