一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放。
我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是
在已有的基础上改的!
源码如下:
<?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';
}
}
?>
无变形缩略图生成程序 swin img class Ver 0.1
发布时间:2006-9-22 16:35 作者: swin.wang 信息来源:
本站原创 [我来说两句(1118条)]
现在有0人对本文发表评论
查看全部评论>>评论区
培训新闻
- 北京隆重推出“先就业,后付费”,LAMP就业班...
- 青岛PHPChina培训中心第二期就业寒假班热招
- 唐山PHPChina授权培训中心首期就业班开始热招...
- 广州多迪,零起点,四个月培养高级工程师,包...
- 大连开沅教育(PHP大连中心)12月LAMP项目实...
- 济南第九期LAMP实训就业班冬节火热报名中
- 西安PCTI-5期业余班热招中......
- 上海LAMP一期实战精英班11月27日开班啦~~~~~...
热点专题
网站特别推荐
- LAMP兄弟连最新开班报道
- 北京隆重推出“先就业,后付费”,LAMP就业班...
- 青岛PHPChina培训中心第二期就业寒假班热招
- 唐山PHPChina授权培训中心首期就业班开始热招...
- 广州多迪,零起点,四个月培养高级工程师,包...
- PHP考试认证问题
- 大连开沅教育(PHP大连中心)12月LAMP项目实...
- 福州厦门什么时候有开培训班
- 济南第九期LAMP实训就业班冬节火热报名中
- 西安PCTI-5期业余班热招中......
社区精华
- alee简说OOP插件机制 < 未完待续 >
- mutou_wu我说PHPer的水平区分
- leehui1983MYSQL开发实用知识集合(暂告一段落...
- laruence深入理解PHP原理之文件上传
- peacock【重点推荐】一款专业级Web开发工具





