ホームページ > php教程 > php手册 > GD を使用したサムネイル生成の 2 つのオプションと違い

GD を使用したサムネイル生成の 2 つのオプションと違い

WBOY
リリース: 2016-06-21 09:06:06
オリジナル
1058 人が閲覧しました

区别|缩略图

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() よりも遅くなります)。

例を見て、この画像を 4 回縮小してみましょう:
<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">&lt;font size=&quot;2&quot;&gt;顺便贴一个效果,用ASCII表示图像。ImageColorAt()有一个很有趣的用处,它可以循环检查&lt;br&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;图像中的每一个像素的颜色,然后对该颜色数据进行操作。&lt;/font&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;font face=&quot;宋体&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;源代码:&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;html&gt;&lt;/font&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;font face=&quot;Courier New&quot;&gt;&lt;body bgcolor=&quot;#000000&quot; style=&quot;line-height:6pt&quot;&gt; &lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;&lt;?php &lt;br/&gt; $im &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagecreatefromjpeg&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(221,0,0)&quot;&gt;'test1.jpg'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;); &lt;br/&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$dx &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagesx&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$im&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;); &lt;br/&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$dy &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagesy&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$im&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;); &lt;br/&gt; for(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$y &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;0&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$y &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;&lt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$dy&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$y&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;++) { &lt;br/&gt; for(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$x&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;0&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$x &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;&lt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$dx&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$x&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;++) { &lt;br/&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$col &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagecolorat&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$im&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$x&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$y&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;); &lt;br/&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$rgb &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;= &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagecolorsforindex&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$im&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;,&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$col&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;); &lt;br/&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,187)&quot;&gt;printf&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(221,0,0)&quot;&gt;'&lt;font color=#%02x%02x%02x&gt;*&lt;/font&gt;'&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;, &lt;br&gt;                 &lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$rgb&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(221,0,0)&quot;&gt;'red'&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$rgb&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(221,0,0)&quot;&gt;'green'&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$rgb&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(221,0,0)&quot;&gt;'blue'&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;]); &lt;br&gt;     } &lt;br&gt;     echo &lt;/span&gt;&lt;span style=&quot;COLOR: rgb(221,0,0)&quot;&gt;&quot;&lt;br&gt;\n&quot;&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;; &lt;br&gt; } &lt;br&gt; &lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;imagedestroy&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;$im&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;COLOR: rgb(0,119,0)&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;); &lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;COLOR: rgb(0,0,187)&quot;&gt;?&gt; &lt;br&gt;&lt;/span&gt;&lt;/body&gt;&lt;/html&gt; &lt;/font&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div> <p><br></p> <p></p></span></span></span>很有趣吧,呵呵..



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート