一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放。
我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是
在已有的基础上改的!
源码如下:
<?php
/*
*版权说明:该版本是在“IEB_UPLOAD
CLASS Ver
1.1”的基础上二次开发的,原程序对
*图片的裁剪将使图片变形、失真!本人在该程序的基础上进行了更改,用数据参数与原图片
*文件参数(主要是指宽和高)进行对比,得出比例值,先生成与原图片同比例缩放的图片,然
*后再以该中间图中心开始截取,从而获得缩略图,当然,图片会被裁剪,但是是最小限度的
*裁剪!
*程序设计:swin.wang Email:
php_in_china@yahoo.com.cn
QQ:592298893
*
*该程序你可无限制使用,但请保留版权信息
×
×使用犯法:
* $upfos =
new ieb_upload('photo_file','./up_img'); photo_file 表单文件域名称,不要加$;
./up_img,上传位置
* $old_file_name=$upfos -> getName();
*
$old_file_fooder=$upfos -> getExt();
* $file_size=$upfos ->
getSize();
* $file_name=$upfos -> newName();
* $upfos
-> upload($file_name);
* $upfos ->
thumb("small_",125,120);
* $new_file_name=$upfos -> UpFile();
$new_file_name 上传后大图名
×
$small_file_name="small_".$new_file_name; $small_file_name 所略图名
*/
class
ieb_upload{
var $FormName; //文件域名称
var $Directroy; //上传至目录
var
$MaxSize; //最大上传大小
var $CanUpload; //是否可以上传
var $doUpFile; //上传的文件名
var
$sm_File; //缩略图名称
var $Error; //错误参数
function
ieb_upload($formName='', $dirPath='', $maxSize=2097152) //(1024*2)*1024=2097152
就是 2M
{
global $FormName, $Directroy, $MaxSize, $CanUpload, $Error,
$doUpFile, $sm_File;
//初始化各种参数
$FormName = $formName;
$MaxSize =
$maxSize;
$CanUpload = true;
$doUpFile = '';
$sm_File =
'';
$Error = 0;
if ($formName == ''){
$CanUpload =
false;
$Error = 1;
break;
}
if ($dirPath ==
''){
$Directroy = $dirPath;
}else{
$Directroy =
$dirPath.'/';
}
}
//检查文件是否存在
function
scanFile()
{
global $FormName, $Error, $CanUpload;
if
($CanUpload){
$scan = is_readable($_FILES[$FormName]['name']);
if ($scan){
$Error = 2;
}
return
$scan;
}
}
//获取文件大小
function getSize($format =
'B')
{
global $FormName, $Error, $CanUpload;
if
($CanUpload){
if ($_FILES[$FormName]['size'] == 0){
$Error =
3;
$CanUpload = false;
}
switch ($format){
case
'B':
return $_FILES[$FormName]['size'];
break;
case
'M':
return ($_FILES[$FormName]['size'])/(1024*1024);
}
}
}
//获取文件类型
function getExt()
{
global $FormName,
$Error, $CanUpload;
if ($CanUpload){
$ext=$_FILES[$FormName]['name'];
$extStr=explode('.',$ext);
$count=count($extStr)-1;
}
return
$extStr[$count];
}
//获取文件名称
function getName()
{
global
$FormName, $CanUpload;
if ($CanUpload){
return
$_FILES[$FormName]['name'];
}
}
//新建文件名
function
newName()
{
global $CanUpload, $FormName;
if
($CanUpload){
$FullName=$_FILES[$FormName]['name'];
$extStr=explode('.',$FullName);
$count=count($extStr)-1;
$ext =
$extStr[$count];
return
date('YmdHis').rand(0,9).'.'.$ext;
}
}
//上传文件
function
upload($fileName = '')
{
global $FormName, $Directroy, $CanUpload,
$Error, $doUpFile;
if ($CanUpload){
if
($_FILES[$FormName]['size'] == 0){
$Error = 3;
$CanUpload =
false;
return $Error;
break;
}
}
if($CanUpload){
if ($fileName == ''){
$fileName = $_FILES[$FormName]['name'];
}
$doUpload=@copy($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);
if($doUpload)
{
$doUpFile = $fileName;
chmod($Directroy.$fileName, 0777);
return true;
}else{
$Error = 4;
return $Error;
}
}
}
//创建图片缩略图
function
thumb($dscChar='',$width=160,$height=120)
{
global $CanUpload, $Error,
$Directroy, $doUpFile, $sm_File;
if ($CanUpload && $doUpFile
!= ''){
$srcFile = $doUpFile;
if ($dscChar == ''){
$dscChar = 'sm_';
}
$dscFile =
$Directroy.$dscChar.$srcFile;
$data =
getimagesize($Directroy.$srcFile,&$info);
switch ($data[2])
{
case 1:
$im = @imagecreatefromgif($Directroy.$srcFile);
break;
case 2:
$im =
@imagecreatefromjpeg($Directroy.$srcFile);
break;
case
3:
$im = @imagecreatefrompng($Directroy.$srcFile);
break;
}
$srcW=imagesx($im);
$srcH=imagesy($im);
if(($srcW/$width)>=($srcH/$height)){
$temp_height=$height;
$temp_width=$srcW/($srcH/$height);
$src_X=abs(($width-$temp_width)/2);
$src_Y=0;
}
else{
$temp_width=$width;
$temp_height=$srcH/($srcW/$width);
$src_X=0;
$src_Y=abs(($height-$temp_height)/2);
}
$temp_img=imagecreatetruecolor($temp_width,$temp_height);
imagecopyresized($temp_img,$im,0,0,0,0,$temp_width,$temp_height,$srcW,$srcH);
$ni=imagecreatetruecolor($width,$height);
imagecopyresized($ni,$temp_img,0,0,$src_X,$src_Y,$width,$height,$width,$height);
$cr = imagejpeg($ni,$dscFile);
chmod($dscFile, 0777);
if ($cr){
$sm_File = $dscFile;
return
true;
}else{
$Error = 5;
return $Error;
}
}
}
//显示错误参数
function Err(){
global
$Error;
return $Error;
}
//上传后的文件名
function
UpFile(){
global $doUpFile, $Error;
if ($doUpFile != ''){
return
$doUpFile;
}else{
$Error =
6;
}
}
//上传文件的路径
function filePath(){
global $Directroy,
$doUpFile, $Error;
if ($doUpFile != ''){
return
$Directroy.$doUpFile;
}else{
$Error =
6;
}
}
//缩略图文件名称
function thumbMap(){
global $sm_File,
$Error;
if ($sm_File != ''){
return $sm_File;
}else{
$Error = 6;
}
}
//显示版本信息
function ieb_version(){
return
'swin img class Ver 0.1';
}
}
?>
文章来源于领测软件测试网 https://www.ltesting.net/