<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码, ASP代码, 精选JS代码, WORDPRESS, 网站SEO,Flash焦点广告,JS焦点广告,CSS技巧 &#124; 九创主题 &#187; PHP图片上传</title>
	<atom:link href="http://www.3code.cn/tag/php-upload-image-tag/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码,ASP代码,精选JS代码,WORDPRESS,网站SEO,Flash焦点广告,JS焦点广告,CSS技巧</description>
	<lastBuildDate>Sat, 11 Feb 2012 12:01:08 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>PHP上传文件夹设置禁止执行脚本文件</title>
		<link>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/</link>
		<comments>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:22:07 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2866</guid>
		<description><![CDATA[只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。]]></description>
			<content:encoded><![CDATA[<p>&lt;Files ~ ".php"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".html"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".htm"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;</p>
<p>只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP批量上传图片的实例教程</title>
		<link>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/</link>
		<comments>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:10:50 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[php批量上传图片]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2723</guid>
		<description><![CDATA[批量上传图片，一次性上传图片，下面是实例:]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.moldchina.org/" target="_blank">China Mould suppliers of Mould, plastic injection molding,China Mould exporter of Mould, injection molding company,</a><br />
<a href="http://www.moldchina.org/" target="_blank">china mould makers,china plastic injection molding, china injection molding company</a><br />
<a href="http://www.9cweb.com/" target="_blank">深圳外贸网站建设, wordpress企业主题, 深圳网页设计</a><br />
<a href="http://www.peony-flowers.com/" target="_blank">Peony, Peony picture, Yellow peony</a></p>
<p>批量上传图片，一次性上传图片，下面是实例:</p>
<blockquote><p>代码：<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;upload picture more once&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form action="" method="post" enctype="multipart/form-data"&gt;<br />
&lt;p&gt;Pictures:&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="file" name="pictures[]" /&gt;&lt;br /&gt;<br />
&lt;input type="submit" name="upload" value="Send" /&gt;<br />
&lt;/p&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;?php<br />
if($_POST['upload']=='Send'){<br />
$dest_folder = "picture/";<br />
if(!file_exists($dest_folder)){<br />
mkdir($dest_folder);<br />
}<br />
foreach ($_FILES["pictures"]["error"] as $key =&gt; $error) {<br />
if ($error == UPLOAD_ERR_OK) {<br />
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];<br />
$name = $_FILES["pictures"]["name"][$key];<br />
$uploadfile = $dest_folder.$name;<br />
move_uploaded_file($tmp_name, $uploadfile);<br />
}<br />
}<br />
}<br />
?&gt;</p></blockquote>
<p>可以试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e6%89%b9%e9%87%8f%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e7%9a%84%e5%ae%9e%e4%be%8b%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php上传图片缩小尺寸实例代码</title>
		<link>http://www.3code.cn/php-upload-pic-cc/</link>
		<comments>http://www.3code.cn/php-upload-pic-cc/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:39:20 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[php类]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2080</guid>
		<description><![CDATA[将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。
这样子在本地环境就可以直接测试使用。]]></description>
			<content:encoded><![CDATA[<p>将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。</p>
<p>这样子在本地环境就可以直接测试使用。</p>
<p>&lt;?php<br />
class CreatMiniature<br />
{<br />
//公共变量<br />
var $srcFile="";        //原图<br />
var $echoType;            //输出图片类型，link--不保存为文件；file--保存为文件<br />
var $im="";                //临时变量<br />
var $srcW="";            //原图宽<br />
var $srcH="";            //原图高</p>
<p>//设置变量及初始化<br />
function SetVar($srcFile,$echoType)<br />
{<br />
$this-&gt;srcFile=$srcFile;<br />
$this-&gt;echoType=$echoType;</p>
<p>$info = "";<br />
$data = GetImageSize($this-&gt;srcFile,$info);<br />
switch ($data[2])<br />
{<br />
case 1:<br />
if(!function_exists("imagecreatefromgif")){<br />
echo "你的GD库不能使用GIF格式的图片，请使用Jpeg或PNG格式！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromGIF($this-&gt;srcFile);<br />
break;<br />
case 2:<br />
if(!function_exists("imagecreatefromjpeg")){<br />
echo "你的GD库不能使用jpeg格式的图片，请使用其它格式的图片！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromJpeg($this-&gt;srcFile);<br />
break;<br />
case 3:<br />
$this-&gt;im = ImageCreateFromPNG($this-&gt;srcFile);<br />
break;<br />
}<br />
$this-&gt;srcW=ImageSX($this-&gt;im);<br />
$this-&gt;srcH=ImageSY($this-&gt;im);<br />
}</p>
<p>//生成扭曲型缩图<br />
function Distortion($toFile,$toW,$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$toW,$toH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>//生成按比例缩放的缩图<br />
function Prorate($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
else<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$this-&gt;srcW,$this-&gt;srcH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
}</p>
<p>//生成最小裁剪后的缩图<br />
function Cut($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ctoH=$toH;<br />
$ctoW=$ctoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
else<br />
{<br />
$ctoW=$toW;<br />
$ctoH=$ctoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
$allImg=$this-&gt;CreatImage($this-&gt;im,$ctoW,$ctoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
$cImg=$this-&gt;CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
ImageDestroy($allImg);<br />
}</p>
<p>//生成背景填充的缩图<br />
function BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$cImg=ImageCreateTrueColor($toW,$toH);<br />
if(!$cImg)<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
}<br />
else<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
$backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //填充的背景颜色<br />
ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor);<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$proImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
/*<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopyMerge($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH,100);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopyMerge($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
*/<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);<br />
}<br />
else<br />
{<br />
ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);<br />
}<br />
}<br />
else<br />
{<br />
ImageCopyMerge($cImg,$this-&gt;im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH)<br />
{<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$creatImg = ImageCreateTrueColor($creatW,$creatH);<br />
if($creatImg)<br />
ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
}<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
return $creatImg;<br />
}</p>
<p>//输出图片，link---只输出，不保存文件。file--保存为文件<br />
function EchoImage($img,$to_File)<br />
{<br />
switch($this-&gt;echoType)<br />
{<br />
case "link":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img);<br />
else return ImagePNG($img);<br />
break;<br />
case "file":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File);<br />
else return ImagePNG($img,$to_File);<br />
break;<br />
}<br />
}</p>
<p>}<br />
?&gt;<br />
&lt;?<br />
if ($_POST["action"]=="addnew") {<br />
$pxname="";<br />
if(!$_FILES['myphoto']['error']){<br />
$f=$_FILES['myphoto'];<br />
$kzm=strtolower(trim(substr($f['name'],-4)));<br />
if($kzm!=".jpg" and $kzm!=".gif" and $kzm!=".png" and $kzm!=".bmp")<br />
{<br />
echo "&lt;script&gt;alert('图片格式不对!($kzm)');location.href='javascript:history.back()';&lt;/script&gt;";<br />
die;<br />
}<br />
$dest_dir='images';//设定上传目录<br />
$pxname=date("ymdhis")."_"."s".substr($f['name'],-4);<br />
$dest=$dest_dir.'/'.$pxname;//我这里设置文件名为日期加上文件名避免重复<br />
$r=move_uploaded_file($f['tmp_name'],$dest);<br />
chmod($dest, 0755);//设定上传的文件的属性<br />
}</p>
<p>$cm=new CreatMiniature();<br />
$cm-&gt;SetVar("images/".$pxname,"file");<br />
$cm-&gt;Prorate("images/".$pxname,150,200);<br />
}<br />
?&gt;</p>
<p>&lt;?<br />
//使用示例<br />
//    include("thumb.php");<br />
//    $cm=new CreatMiniature();<br />
//    $cm-&gt;SetVar("1.jpg","file");<br />
//    $cm-&gt;Distortion("dis_bei.jpg",150,200);<br />
//    $cm-&gt;Prorate("pro_bei.jpg",150,200);<br />
//    $cm-&gt;Cut("cut_bei.jpg",150,200);<br />
//    $cm-&gt;BackFill("fill_bei.jpg",150,200);&lt;/p&gt;<br />
?&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;form name="form1" enctype="multipart/form-data" method="post" action=""&gt;<br />
&lt;input name="myphoto" type="file" id="myphoto"&gt;<br />
&lt;input type="submit" name="Submit" value="提交"&gt;<br />
&lt;input name="action" type="hidden" id="action" value="addnew"&gt;<br />
&lt;/form&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-upload-pic-cc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php缩略图程序</title>
		<link>http://www.3code.cn/php-thu/</link>
		<comments>http://www.3code.cn/php-thu/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:46:17 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1826</guid>
		<description><![CDATA[这是一款利用php自带的功能把指定的大图生成我们指定大小的缩略图代码哦
使用方便简单，只要把设置下面四个参数就可以生成自己想的大小的缩略图哦。]]></description>
			<content:encoded><![CDATA[<p>这是一款利用php自带的功能把指定的大图生成我们指定大小的缩略图代码哦<br />
使用方便简单，只要把设置下面四个参数就可以生成自己想的大小的缩略图哦。</p>
<p>*/</p>
<blockquote><p>function bigtosmallimg($file,$path,$w=120,$h=90)<br />
{<br />
$img=$path.$file;<br />
$imgarr=getimagesize($img);<br />
$sw=$imgarr[0];//原图宽<br />
$sh=$imgarr[1];//原图高<br />
$stype=$imgarr[2];<br />
//按比例缩放<br />
if($sw/$sh&gt;$w/$h){<br />
$mw=$w;<br />
$mh=(int)$sh*($w/$sw);<br />
}<br />
else{<br />
$mw=(int)$sw*($h/$sh);<br />
$mh=$h;<br />
}</p>
<p>switch($stype){//根据上传好的图形文件类型新建一个用来生成缩略图的源文件。<br />
case 1:<br />
$srcf = imagecreatefromgif($img);<br />
break;<br />
case 2:<br />
$srcf = imagecreatefromjpeg($img);<br />
break;<br />
case 3:<br />
$srcf = imagecreatefrompng($img);<br />
break;<br />
default:<br />
showmsg('程序调用错误。');<br />
break;<br />
}</p>
<p>$desf =imagecreatetruecolor($mw,$mh);</p>
<p>imagecopyresampled($desf,$srcf,0,0,0,0,$mw,$mh,$sw,$sh);<br />
$sm_name=$path."s_".$file;<br />
switch($stype){<br />
case 1:<br />
imagegif($desf,$sm_name);<br />
break;<br />
case 2:<br />
imagejpeg($desf,$sm_name);<br />
break;<br />
case 3:<br />
imagepng($desf,$sm_name);<br />
break;<br />
default:<br />
showmsg('无法生成' . $stype . '的缩略图。');<br />
break;<br />
}<br />
imagedestroy($desf);<br />
imagedestroy($srcf);</p>
<p>}</p></blockquote>
<p>//此缩略图调用方法</p>
<blockquote><p>bigtosmallimg($file,$path,$w=120,$h=90);<br />
/*</p></blockquote>
<p>$file = 图片的路径<br />
$path = 生成后保存的路径<br />
$w =图片宽度<br />
$h =图片高度<br />
*/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-thu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP上传总结-文件大小检测及大文件上传</title>
		<link>http://www.3code.cn/php-uploadfiles/</link>
		<comments>http://www.3code.cn/php-uploadfiles/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 11:09:35 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=614</guid>
		<description><![CDATA[由于涉及到本地和服务器两方面的安全问题，所以基于input type="file"形式的页面文件上传一直处于一个很尴尬的位置。一方面，用户不希望隐私泄露，所以浏览器无法对用户在上传时选择的文件做有效的判断。另一方面，为了服务器端的安全，减轻传输负担，系统又希望能在用户开始上传之前就将非法的文件拒之门外。]]></description>
			<content:encoded><![CDATA[<p><strong>PHP上传总结-文件大小检测及大文件上传</strong></p>
<p>由于涉及到本地和服务器两方面的安全问题，所以基于input type="file"形式的页面文件上传一直处于一个很尴尬的位置。一方面，用户不希望隐私泄露，所以浏览器无法对用户在上传时选择的文件做有效的判断。另一方面，为了服务器端的安全，减轻传输负担，系统又希望能在用户开始上传之前就将非法的文件拒之门外。</p>
<p>一来一去，基于原始input方式的上传，成为网络存储网站避之唯恐不及的遗留性问题，也造就了现在千奇百怪的插件、上传客户端。</p>
<p>input方式的上传就如此之差么？当然不是。上传文件不大的时候，它还是非常简单可靠的，在PHP中，我们只需要一个复合型表单</p>
<p>&lt;form enctype="multipart/form-data" action="__URL__" method="POST"&gt;<br />
一个输入框<br />
&lt;input name="userfile" type="file" /&gt;<br />
和服务器端的一行代码<br />
move_uploaded_file($_FILES['userfile']['tmp_name'], '/var/www/uploads/'. basename($_FILES['userfile']['name']));</p>
<p>就可以实现整个上传过程。</p>
<p>但随文件增大，表单上传的不足就会暴露出来。尤其是我们想取得最基本的文件大小来阻止过大文件上传这一简单的想法，也变得如此困难。以下一一道来：</p>
<p><strong>通过MAX_FILE_SIZE</strong><br />
我们经常会在手册里读到:</p>
<p>MAX_FILE_SIZE 隐藏字段（单位为字节）必须放在文件输入字段之前，其值为接收文件的最大尺寸。这是对浏览器的一个建议，PHP 也会检查此项。在浏览器端可以简单绕过此设置，因此不要指望用此特性来阻挡大文件。实际上，PHP 设置中的上传文件最大值是不会失效的。但是最好还是在表单中加上此项目，因为它可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦。</p>
<p>显然PHP的开发者们也考虑到了大文件上传的问题，但就像手册所说，MAX_FILE_SIZE只是对浏览器的一个建议，事实上目前为止所有主流的浏览器并没有采纳这个建议，所以采用MAX_FILE_SIZE约束文件大小形同摆设，不可行。</p>
<p><strong>通过服务器端</strong><br />
MAX_FILE_SIZE既然无效，那么用户可以将文件上传到服务器，服务器端通过$_FILES['userfile']['size']判断用户上传的文件大小，然后决定是否接受上传并返回信息。暂且排除服务器的负荷以及可能存在的恶意破坏行为，这种解决方案听起来无非是浪费一部分带宽，也能对用户上传文件作出约束。</p>
<p>但这也是不可行的，PHP的文件上传受到php.ini以下这些设置的影响:</p>
<p>post_max_size<br />
upload_max_filesize<br />
max_execution_time<br />
memory_limit<br />
虽然设置方法在手册中都有比较详细的说明，之所以仍然说此方法不可行，是因为php执行脚本在超过memory_limit时，该次的POST数据会全部丢失并且不会报错！</p>
<p>试想用户填写了一个超长的表单，并伴随一个超过memory_limit的文件一起上传，经过了漫长的等待时间之后发现等来的又是一张干干净净的空白表单，那是何等印象深刻的用户体验啊。更何况数十M的服务器流量仅仅用来检测文件大小，是现在的网络环境不允许的。</p>
<p><strong>通过Javascript</strong><br />
Javascript是基于浏览器的，虽然JS能完成很多看似不可能的任务，但浏览器做不到的事情JS同样无法做到。先天不足注定了这项工作仅仅靠Javascript是无法胜任的。不过一些IE Only的方法也还是存在的，仅作参考。</p>
<p><strong>通过Flash</strong><br />
Flash的FileReference类提供了一套比较全面的文件处理方法，现在大多数大文件上传也都采用了基于Flash的方案。如果利用Flash与Js交互，能否实现客户端对文件大小的检测呢？答案是可行的。</p>
<p>首先在flash文件中实例化FileReference类。</p>
<p>1. var fr = new FileReference();</p>
<p>基于这个类就可以用Flash提供的file browse和SelectFile事件替代浏览器的事件。我们需要：</p>
<p>1.绑定SelectFile</p>
<p>1. fr.addEventListener(Event.SELECT, onSelectFile);</p>
<p>2.创建一个供Js访问的对象，用来放置flash得到的文件信息</p>
<p>1. var s = {<br />
2.   size:0,<br />
3.   name:'',<br />
4.   type:''<br />
5. }</p>
<p>3.创建file browse方法</p>
<p>1. function browseFile():void {<br />
2.   fr.browse();<br />
3. }</p>
<p>4.当SelectFile事件触发的时候，传递文件信息</p>
<p>1. function onSelectFile(e:Event):void {<br />
2.   s.size = fr.size;<br />
3.   s.name = fr.name;<br />
4.   s.type = fr.type;<br />
5. }</p>
<p>5.将browseFile方法公开可供Js调用</p>
<p>1. ExternalInterface.addCallback("browseFile", browseFile);</p>
<p>6.将得到的文件信息传递给Js</p>
<p>1. ExternalInterface.call("onSelectFile",s);</p>
<p>现在我们已经可以通过Js获得由flash传递来的文件大小信息了，具体的实现可以参看Demo。</p>
<p>结论<br />
问题至此似乎已经得到解决了，我们已经成功的校验了文件大小不是么。但本文的最终结论是，基于Flash的文件大小校验，仍然不可行。</p>
<p>文件大小校验的唯一目的，是为了上传。在上面的Demo中可以看到校验成功的文件名会显示在一个输入框里。熟悉上传的同学不觉得少了什么吗？没错，通过flash只能得到文件名，而无法得到文件的完整路径，而文件路径却是input方式上传的必要条件。所以虽然可以成功的通过Flash与Js交互校验文件大小，但我们能做到的也仅仅只是校验而已，之后想要上传，唯有继续通过flash方式进行。</p>
<p>Flash开发出于安全考虑屏蔽了文件的完整路径这无可厚非，不过文件上传，尤其是PHP环境下的文件校验上传方案仍然没有得到最好的解决。</p>
<p><strong>当然弥补的方法有很多：</strong></p>
<p>基于Perl的项目 FileChucker , XUpload , Uber-Uploader<br />
基于Flash的项目 SWFUpload<br />
还有筒子用PHP直接在服务器华丽的建立socket链接。<br />
但终究我希望有一天能看到仅基于HTML就能实现的严整健壮的上传方案，但愿这一天不会太远。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-uploadfiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP常用图片处理类</title>
		<link>http://www.3code.cn/php-image-handle-class/</link>
		<comments>http://www.3code.cn/php-image-handle-class/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 06:08:16 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=101</guid>
		<description><![CDATA[php常用图片处理类--等比缩放，水印，裁剪，创建缩略图]]></description>
			<content:encoded><![CDATA[<div>
<p><strong>php常用图片处理类</strong></p>
<p><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?<br />
</span><span style="color: #007700;">class </span><span style="color: #0000bb;">image </span><span style="color: #007700;">{<br />
</span><span style="color: #ff8000;">// 当前图片<br />
</span><span style="color: #0000bb;">protected  $img</span><span style="color: #007700;">;<br />
</span><span style="color: #ff8000;">//  图像types 对应表<br />
</span><span style="color: #0000bb;">protected $types </span><span style="color: #007700;">= array(<br />
</span><span style="color: #0000bb;">1 </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'gif'</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">2 </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'jpg'</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">3 </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'png'</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">6 </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'bmp'<br />
</span><span style="color: #007700;">);</span></span></code></p>
<p><span style="color: #ff8000;">// image<br />
</span><span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">__construct</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">=</span><span style="color: #dd0000;">''</span><span style="color: #007700;">){<br />
!</span><span style="color: #0000bb;">$img </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">param</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">);<br />
}</span></p>
<p><span style="color: #ff8000;">//  Info<br />
</span><span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">param</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">){<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">img </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$img</span><span style="color: #007700;">;<br />
return </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">;<br />
}</span></p>
<p><span style="color: #ff8000;">// imageInfo<br />
</span><span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">getImageInfo</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">){<br />
</span><span style="color: #0000bb;">$info </span><span style="color: #007700;">= @</span><span style="color: #0000bb;">getimagesize</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">);<br />
if(isset(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">types</span><span style="color: #007700;">[</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">2</span><span style="color: #007700;">]])){<br />
</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'ext'</span><span style="color: #007700;">] = </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">] = </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">types</span><span style="color: #007700;">[</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">2</span><span style="color: #007700;">]];<br />
} else{<br />
</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'ext'</span><span style="color: #007700;">] = </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">] = </span><span style="color: #dd0000;">'jpg'</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">] == </span><span style="color: #dd0000;">'jpg' </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">] = </span><span style="color: #dd0000;">'jpeg'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'size'</span><span style="color: #007700;">] =  @</span><span style="color: #0000bb;">filesize</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$img</span><span style="color: #007700;">);<br />
return </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">;<br />
}</span></p>
<p><span style="color: #ff8000;">// thumb(新图地址, 宽, 高, 裁剪,  允许放大)<br />
</span><span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">thumb</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">=</span><span style="color: #0000bb;">160</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">=</span><span style="color: #0000bb;">120</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$cut</span><span style="color: #007700;">=</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$big</span><span style="color: #007700;">=</span><span style="color: #0000bb;">0</span><span style="color: #007700;">){<br />
</span><span style="color: #ff8000;">// 获取原图信息<br />
</span><span style="color: #0000bb;">$info </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getImageInfo</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">img</span><span style="color: #007700;">);<br />
if(!</span><span style="color: #0000bb;">emptyempty</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">])) {<br />
</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">1</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$type </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$ext </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'ext'</span><span style="color: #007700;">];<br />
unset(</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// 如果原图比缩略图小  并且不允许放大<br />
</span><span style="color: #007700;">if(</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">&lt; </span><span style="color: #0000bb;">$new_h </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">&lt; </span><span style="color: #0000bb;">$new_w </span><span style="color: #007700;">&amp;&amp; !</span><span style="color: #0000bb;">$big</span><span style="color: #007700;">){<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #ff8000;">// 裁剪图片<br />
</span><span style="color: #007700;">if(</span><span style="color: #0000bb;">$cut </span><span style="color: #007700;">== </span><span style="color: #0000bb;">0</span><span style="color: #007700;">){ </span><span style="color: #ff8000;">// 等比列<br />
</span><span style="color: #0000bb;">$scale </span><span style="color: #007700;">= </span><span style="color: #0000bb;">min</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">); </span><span style="color: #ff8000;">//  计算缩放比例<br />
</span><span style="color: #0000bb;">$width </span><span style="color: #007700;">= (int)(</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">*</span><span style="color: #0000bb;">$scale</span><span style="color: #007700;">); </span><span style="color: #ff8000;">//  缩略图尺寸<br />
</span><span style="color: #0000bb;">$height </span><span style="color: #007700;">= (int)(</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">*</span><span style="color: #0000bb;">$scale</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$start_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$start_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$end_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$end_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">;<br />
} elseif(</span><span style="color: #0000bb;">$cut </span><span style="color: #007700;">== </span><span style="color: #0000bb;">1</span><span style="color: #007700;">){ </span><span style="color: #ff8000;">// center center 裁剪<br />
</span><span style="color: #0000bb;">$scale1 </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$scale2 </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
if(</span><span style="color: #0000bb;">$scale1 </span><span style="color: #007700;">&gt; </span><span style="color: #0000bb;">$scale2</span><span style="color: #007700;">){<br />
</span><span style="color: #0000bb;">$end_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$scale1</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$start_h </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">-</span><span style="color: #0000bb;">$end_h</span><span style="color: #007700;">)/</span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$start_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$end_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">;<br />
} else{<br />
</span><span style="color: #0000bb;">$end_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">*</span><span style="color: #0000bb;">$scale1</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$start_w </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">-</span><span style="color: #0000bb;">$end_w</span><span style="color: #007700;">)/</span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$start_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$end_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #0000bb;">$width </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$height</span><span style="color: #007700;">= </span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">;<br />
} elseif(</span><span style="color: #0000bb;">$cut </span><span style="color: #007700;">== </span><span style="color: #0000bb;">2</span><span style="color: #007700;">){ </span><span style="color: #ff8000;">// left top 裁剪<br />
</span><span style="color: #0000bb;">$scale1 </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$scale2 </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
if(</span><span style="color: #0000bb;">$scale1 </span><span style="color: #007700;">&gt; </span><span style="color: #0000bb;">$scale2</span><span style="color: #007700;">){<br />
</span><span style="color: #0000bb;">$end_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">/</span><span style="color: #0000bb;">$scale1</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$end_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">;<br />
} else{<br />
</span><span style="color: #0000bb;">$end_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">round</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">*</span><span style="color: #0000bb;">$scale1</span><span style="color: #007700;">,</span><span style="color: #0000bb;">2</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$end_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #0000bb;">$start_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$start_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$width </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$new_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$height</span><span style="color: #007700;">= </span><span style="color: #0000bb;">$new_h</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #ff8000;">// 载入原图<br />
</span><span style="color: #0000bb;">$createFun </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'ImageCreateFrom'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$oldimg </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$createFun</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">img</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// 创建缩略图<br />
</span><span style="color: #007700;">if(</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">!=</span><span style="color: #dd0000;">'gif' </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">function_exists</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'imagecreatetruecolor'</span><span style="color: #007700;">)){<br />
</span><span style="color: #0000bb;">$newimg </span><span style="color: #007700;">= </span><span style="color: #0000bb;">imagecreatetruecolor</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$width</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$height</span><span style="color: #007700;">);<br />
}  else{<br />
</span><span style="color: #0000bb;">$newimg </span><span style="color: #007700;">= </span><span style="color: #0000bb;">imagecreate</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$width</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$height</span><span style="color: #007700;">);<br />
}<br />
</span><span style="color: #ff8000;">// 复制图片<br />
</span><span style="color: #007700;">if(</span><span style="color: #0000bb;">function_exists</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"ImageCopyResampled"</span><span style="color: #007700;">)){<br />
</span><span style="color: #0000bb;">ImageCopyResampled</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$newimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$start_w</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$start_h</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$width</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$height</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$end_w</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$end_h</span><span style="color: #007700;">);<br />
} else{<br />
</span><span style="color: #0000bb;">ImageCopyResized</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$newimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$start_w</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$start_h</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$width</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$height</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$end_w</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$end_h</span><span style="color: #007700;">);<br />
}</span></p>
<p><span style="color: #ff8000;">// 对jpeg图形设置隔行扫描<br />
</span><span style="color: #0000bb;">$type </span><span style="color: #007700;">== </span><span style="color: #dd0000;">'jpeg' </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">imageinterlace</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$newimg</span><span style="color: #007700;">,</span><span style="color: #0000bb;">1</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// 生成图片<br />
</span><span style="color: #0000bb;">$imageFun </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'image'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">;<br />
!@</span><span style="color: #0000bb;">$imageFun</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$newimg</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">)  &amp;&amp; die(</span><span style="color: #dd0000;">'保存失败!检查目录是否存在并且可写?'</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">ImageDestroy</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$newimg</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">ImageDestroy</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">);<br />
return </span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">;<br />
}<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
}</span></p>
<p><span style="color: #ff8000;">// water(保存地址,水印图片,水印位置,透明度)<br />
</span><span style="color: #0000bb;">public </span><span style="color: #007700;">function </span><span style="color: #0000bb;">water</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$water</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$pos</span><span style="color: #007700;">=</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$pct</span><span style="color: #007700;">=</span><span style="color: #0000bb;">80</span><span style="color: #007700;">){<br />
</span><span style="color: #ff8000;">// 加载水印图片<br />
</span><span style="color: #0000bb;">$info </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getImageInfo</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$water</span><span style="color: #007700;">);<br />
if(!</span><span style="color: #0000bb;">emptyempty</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">])){<br />
</span><span style="color: #0000bb;">$water_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$water_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">1</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$type </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$fun </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'imagecreatefrom'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$waterimg </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$fun</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$water</span><span style="color: #007700;">);<br />
} else{<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #ff8000;">// 加载背景图片<br />
</span><span style="color: #0000bb;">$info </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getImageInfo</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">img</span><span style="color: #007700;">);<br />
if(!</span><span style="color: #0000bb;">emptyempty</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">])){<br />
</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #0000bb;">1</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$type </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$info</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'type'</span><span style="color: #007700;">];<br />
</span><span style="color: #0000bb;">$fun </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'imagecreatefrom'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$oldimg </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$fun</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">img</span><span style="color: #007700;">);<br />
} else{<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #ff8000;">// 剪切水印<br />
</span><span style="color: #0000bb;">$water_w </span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">$water_w </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$water_h </span><span style="color: #007700;">&gt;</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">&amp;&amp; </span><span style="color: #0000bb;">$water_h </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h</span><span style="color: #007700;">;</span></p>
<p><span style="color: #ff8000;">//  水印位置<br />
</span><span style="color: #007700;">switch(</span><span style="color: #0000bb;">$pos</span><span style="color: #007700;">){<br />
case </span><span style="color: #0000bb;">0</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//随机<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">rand</span><span style="color: #007700;">(</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,(</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">));<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">rand</span><span style="color: #007700;">(</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,(</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">));<br />
break;<br />
case </span><span style="color: #0000bb;">1</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//1为顶端居左<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">2</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//2为顶端居中<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">3</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//3为顶端居右<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">4</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//4为中部居左<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">5</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//5为中部居中<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">6</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//6为中部居右<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">7</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//7为底端居左<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">0</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">8</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//8为底端居中<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= (</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">) / </span><span style="color: #0000bb;">2</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">;<br />
break;<br />
case </span><span style="color: #0000bb;">9</span><span style="color: #007700;">:</span><span style="color: #ff8000;">//9为底端居右<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">;<br />
break;<br />
default: </span><span style="color: #ff8000;">//随机<br />
</span><span style="color: #0000bb;">$posX </span><span style="color: #007700;">= </span><span style="color: #0000bb;">rand</span><span style="color: #007700;">(</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,(</span><span style="color: #0000bb;">$old_w </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">));<br />
</span><span style="color: #0000bb;">$posY </span><span style="color: #007700;">= </span><span style="color: #0000bb;">rand</span><span style="color: #007700;">(</span><span style="color: #0000bb;">0</span><span style="color: #007700;">,(</span><span style="color: #0000bb;">$old_h </span><span style="color: #007700;">- </span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">));<br />
break;<br />
}<br />
</span><span style="color: #ff8000;">// 设定图像的混色模式<br />
</span><span style="color: #0000bb;">imagealphablending</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">true</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// 添加水印<br />
</span><span style="color: #0000bb;">imagecopymerge</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$waterimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$posX</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$posY</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">0</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$water_w</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$water_h</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$pct</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$fun </span><span style="color: #007700;">= </span><span style="color: #dd0000;">'image'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$type</span><span style="color: #007700;">;<br />
!@</span><span style="color: #0000bb;">$fun</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">) &amp;&amp;  die(</span><span style="color: #dd0000;">'保存失败!检查目录是否存在并且可写?'</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">imagedestroy</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$oldimg</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">imagedestroy</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$waterimg</span><span style="color: #007700;">);<br />
return </span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">;<br />
}<br />
}<br />
</span><span style="color: #0000bb;">?&gt;</span></div>
<div>
<p><strong>函数描述及例子</strong></p>
<p><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?<br />
</span><span style="color: #ff8000;">//img类使用示例：<br />
// 原始图片<br />
//$img1 =  './image/test.jpg';<br />
// 水印后的图片<br />
//$img2 = './image/test_new.jpg';<br />
// 水印<br />
//$water = './image/water.gif';<br />
//$img = new image();<br />
// 等比缩放<br />
//$img-&gt;param($img1)-&gt;thumb('./image/test_0.jpg',  200,200,0);<br />
// center center 裁剪<br />
//$img-&gt;param($img1)-&gt;thumb('./image/test_1.jpg', 200,200,1);<br />
// top left 裁剪<br />
//$img-&gt;param($img1)-&gt;thumb('./image/test_2.jpg', 200,200,2);<br />
// 右下角添加水印<br />
//$img-&gt;param($img1)-&gt;water($img2,$water,9);<br />
</span><span style="color: #0000bb;">?&gt;</span> </span></code></p>
<p style="text-align: center; clear: both; padding-top: 20px;">
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-image-handle-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php上传图片函数</title>
		<link>http://www.3code.cn/php-upload-pic/</link>
		<comments>http://www.3code.cn/php-upload-pic/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 04:49:53 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=86</guid>
		<description><![CDATA[判断图片格式; 指定上传路径; 生成随机文件名; 返回路径值（方便插入数据)]]></description>
			<content:encoded><![CDATA[<p>php上传类网上一大堆，不想这么复杂，搞一个简单的函数来实现图片的上传，费得每次都要重新写上传的步骤。函数很简单，实现以下几点功能：</p>
<p>判断图片格式<br />
指定上传路径<br />
生成随机文件名<br />
返回路径值（方便插入数据）</p>
<p><strong>代码如下：</strong></p>
<p>&lt;?</p>
<p>function upload_file($files,$folder)//上传图片<br />
{<br />
$file_tyle = $files['type'];<br />
$file_type_arr = array('image/gif','image/x-png','image/jpg','image/pjpeg');<br />
if(!in_array($file_tyle,$file_type_arr) )<br />
{<br />
exit('file type only can be: png,jpeg,jpg,gif');<br />
}<br />
$knamearray = explode(".",$files["name"]);<br />
$kname      = $knamearray[count($knamearray)-1];<br />
$rand_str   = date("ymdhis");<br />
$file_name  = $rand_str.".".$kname;<br />
$savepath = "$folder/";<br />
/*$savepath = "$folder/date_".date('YmdHis')."/";<br />
if( !is_dir($savepath) ) mkdir($savepath);*/<br />
$upfile = $savepath.$file_name;<br />
if( !move_uploaded_file($files['tmp_name'],$upfile) )<br />
{<br />
exit('upload error, please check your file type: png,jpeg,jpg,gif');<br />
}<br />
return $file_name;//不要回传值此行可注释掉<br />
}</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-upload-pic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

