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;
}
?>