PHP的GD扩展提供了两个函数来缩放图像:
<span lang="EN-US">ImageCopyResized(<tt><em>dest</em></tt>, <tt><em>src</em></tt>, <tt><em>dx</em></tt>, <tt><em>dy</em></tt>, <tt><em>sx</em></tt>, <tt><em>sy</em></tt>, <tt><em>dw</em></tt>, <tt><em>dh</em></tt>, <tt><em>sw</em></tt>, <tt><em>sh</em></tt>);<br>ImageCopyResampled(<tt><em>dest</em></tt>, <tt><em>src</em></tt>, <tt><em>dx</em></tt>, <tt><em>dy</em></tt>, <tt><em>sx</em></tt>, <tt><em>sy</em></tt>, <tt><em>dw</em></tt>, <tt><em>dh</em></tt>, <tt><em>sw</em></tt>, <tt><em>sh</em></tt>);</span> <br>
<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)">
<p><code><span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)"></span></span></span>
<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)"></span></span></span>
ImageCopyResized( ) function works in all GD versions, but its scaling The algorithm of the image is relatively rough and may cause jagged edges of the image. GD 2.x has a new ImageCopyResampled( ) function. The image edges obtained by its pixel interpolation algorithm are relatively smooth (but this function is slower than ImageCopyResized()Slow).<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,187)"><?php <br><br> $src </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageCreateFromJPEG</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(221,0,0)">'php.jpg'</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <br><br> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$width </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageSx</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$src</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$height </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageSy</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$src</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$x </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">$width</SPAN><SPAN style="COLOR: rgb(0,119,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,187)">2</SPAN><SPAN style="COLOR: rgb(0,119,0)">; </SPAN><SPAN style="COLOR: rgb(0,0,187)">$y </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">$height</SPAN><SPAN style="COLOR: rgb(0,119,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,187)">2</SPAN><SPAN style="COLOR: rgb(0,119,0)">; <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$dst </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageCreateTrueColor</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$x</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$y</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageCopyResized</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$dst</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$src</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$x</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$y</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$width</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$height</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(255,128,0)">//ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$width,$height); <br><br> </SPAN><SPAN style="COLOR: rgb(0,0,187)">header</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(221,0,0)">'Content-Type: image/jpeg'</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">ImageJPEG</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$dst</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(221,0,0)">''</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">100</SPAN><SPAN style="COLOR: rgb(0,119,0)">); <BR></SPAN><SPAN style="COLOR: rgb(0,0,187)">?></span> <br><br>原图:<br><img alt="" src="http://www.bkjia.com/uploads/allimg/131016/061UI255-0.jpg"><br><br>使用</span>
<span style="max-width:90%"><span style="COLOR: rgb(0,119,0)"></span><span style="COLOR: rgb(0,0,187)">ImageCopyResized</span><span style="COLOR: rgb(0,119,0)">()<span style="COLOR: rgb(0,0,0)">函数生成的结果:<br><img alt="" src="http://www.bkjia.com/uploads/allimg/131016/061UIT1-1.jpg"><br><br><br></span></span></span>
<span style="max-width:90%">使用</span>
<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"></span><span style="COLOR: rgb(0,0,187)">ImageCopyResampled</span><span style="COLOR: rgb(0,119,0)">()<span style="COLOR: rgb(0,0,0)">函数生成的结果:</span></span></span>
<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)"><br></span><br></span><span style="COLOR: rgb(0,0,187)"></span></span>
<span style="max-width:90%"><span style="COLOR: rgb(0,0,187)">ImageCopyResampled</span><span style="COLOR: rgb(0,119,0)">()<span style="COLOR: rgb(0,0,0)">函数生成的结果比较平滑,效果较好。<br><br></span></span></span>
<span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)"><code><span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,119,0)"><span style="COLOR: rgb(0,0,0)"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><font size="2">顺便贴一个效果,用ASCII表示图像。ImageColorAt()有一个很有趣的用处,它可以循环检查<br></font><font size="2">图像中的每一个像素的颜色,然后对该颜色数据进行操作。</font></pre><div class="contentsignin">Copy after login</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><font face="宋体" size="2"><span style="FONT-SIZE: 12pt">源代码:<br></span></font><font face="Courier New"><html></font></pre><div class="contentsignin">Copy after login</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><font face="Courier New"><body bgcolor="#000000" style="line-height:6pt"> </font><font face="Courier New"><span style="COLOR: rgb(0,0,187)"><?php <BR> $im </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">imagecreatefromjpeg</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(221,0,0)">'test1.jpg'</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$dx </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">imagesx</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$im</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$dy </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">imagesy</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$im</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">); <BR> for(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$y </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">; </SPAN><SPAN style="COLOR: rgb(0,0,187)">$y </SPAN><SPAN style="COLOR: rgb(0,119,0)">< </SPAN><SPAN style="COLOR: rgb(0,0,187)">$dy</SPAN><SPAN style="COLOR: rgb(0,119,0)">; </SPAN><SPAN style="COLOR: rgb(0,0,187)">$y</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">++) { <BR> for(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$x</SPAN><SPAN style="COLOR: rgb(0,119,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,187)">0</SPAN><SPAN style="COLOR: rgb(0,119,0)">; </SPAN><SPAN style="COLOR: rgb(0,0,187)">$x </SPAN><SPAN style="COLOR: rgb(0,119,0)">< </SPAN><SPAN style="COLOR: rgb(0,0,187)">$dx</SPAN><SPAN style="COLOR: rgb(0,119,0)">; </SPAN><SPAN style="COLOR: rgb(0,0,187)">$x</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">++) { <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$col </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">imagecolorat</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$im</SPAN><SPAN style="COLOR: rgb(0,119,0)">, </SPAN><SPAN style="COLOR: rgb(0,0,187)">$x</SPAN><SPAN style="COLOR: rgb(0,119,0)">, </SPAN><SPAN style="COLOR: rgb(0,0,187)">$y</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">$rgb </SPAN><SPAN style="COLOR: rgb(0,119,0)">= </SPAN><SPAN style="COLOR: rgb(0,0,187)">imagecolorsforindex</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(0,0,187)">$im</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$col</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: rgb(0,119,0)">); <BR> </SPAN><SPAN style="COLOR: rgb(0,0,187)">printf</SPAN><SPAN style="COLOR: rgb(0,119,0)">(</SPAN><SPAN style="COLOR: rgb(221,0,0)">'<font color=#%02x%02x%02x>*</font>'</span></font><font face="Courier New"><span style="COLOR: rgb(0,119,0)">, <br> </span><span style="COLOR: rgb(0,0,187)">$rgb</span><span style="COLOR: rgb(0,119,0)">[</span><span style="COLOR: rgb(221,0,0)">'red'</span><span style="COLOR: rgb(0,119,0)">],</span><span style="COLOR: rgb(0,0,187)">$rgb</span><span style="COLOR: rgb(0,119,0)">[</span><span style="COLOR: rgb(221,0,0)">'green'</span><span style="COLOR: rgb(0,119,0)">],</span><span style="COLOR: rgb(0,0,187)">$rgb</span><span style="COLOR: rgb(0,119,0)">[</span><span style="COLOR: rgb(221,0,0)">'blue'</span></font><font face="Courier New"><span style="COLOR: rgb(0,119,0)">]); <br> } <br> echo </span><span style="COLOR: rgb(221,0,0)">"<br>\n"</span></font><font face="Courier New"><span style="COLOR: rgb(0,119,0)">; <br> } <br> </span><span style="COLOR: rgb(0,0,187)">imagedestroy</span><span style="COLOR: rgb(0,119,0)">(</span><span style="COLOR: rgb(0,0,187)">$im</span></font><span style="COLOR: rgb(0,119,0)"><font face="Courier New">); <br></font></span><font face="Courier New"><span style="COLOR: rgb(0,0,187)">?> <br></span></body></html> </font></pre><div class="contentsignin">Copy after login</div></div>
<p><br></p>
<p><img alt="" src="http://www.bkjia.com/uploads/allimg/131016/061UH1N-3.gif"></p></span></span></span>
很有趣吧,呵呵..