区别|缩略图
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>
ImageCopyResize()関数はすべてのGDバージョンで有効ですが、画像のスケーリングアルゴリズムが粗く、画像のエッジがギザギザになる可能性があります。 GD 2.x には新しい ImageCopyResampled() 関数があり、そのピクセル補間アルゴリズムによって取得された画像のエッジは比較的滑らかです (ただし、この関数の速度は ImageCopyResize() よりも遅くなります)。 <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)">$幅 </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)">$高さ </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)">$幅</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)">$高さ</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)">画像作成TrueColor</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)"></SPAN>ImageCopyResize<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)">$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)">$幅</SPAN><SPAN style="COLOR: rgb(0,119,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,187)">$高さ</SPAN><SPAN style="COLOR: rgb(0,119,0)">); LED($dst, $src, 0,0,0,0,$x,$y,$width,$height); </SPAN><SPAN style="COLOR: rgb(0,0,187)"> </SPAN><SPAN style="COLOR: rgb(0,119,0)">header<br/></SPAN>(<SPAN style="COLOR: rgb(255,128,0)"><br/>'Content-Type: image/jpeg'<br/></SPAN> ImageJPEG<SPAN style="COLOR: rgb(0,0,187)"></SPAN>); (<SPAN style="COLOR: rgb(0,119,0)"></SPAN>$dst<SPAN style="COLOR: rgb(221,0,0)"></SPAN>,<SPAN style="COLOR: rgb(0,119,0)"><br/>''</SPAN><SPAN style="COLOR: rgb(0,0,187)">,</SPAN><SPAN style="COLOR: rgb(0,119,0)">100</SPAN><SPAN style="COLOR: rgb(0,0,187)">); </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)"></span>を使用してください<span style="COLOR: rgb(0,119,0)"><br></span><span style="COLOR: rgb(0,0,187)">ImageCopyResize</span> 生成された結果<br>()<br>関数による: <br><br><br></span></span>
<span style="COLOR: rgb(0,0,0)">使用</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="COLOR: rgb(0,0,0)"><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">ログイン後にコピー</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">ログイン後にコピー</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">ログイン後にコピー</div></div>
<p><br></p>
<p></p></span></span></span>
很有趣吧,呵呵..