php下用GD生成生成缩略图的两个选择和区别_PHP教程
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( )函数在所有GD版本中有效,但其缩放图像的算法比较粗糙,可能会导致图像边缘的锯齿。GD 2.x中新增了一个ImageCopyResampled( )函数,其像素插值算法得到的图像边缘比较平滑(但该函数的速度比ImageCopyResized()慢)。来看一个例子,我们将这个图缩小四倍:
<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 src="/static/imghw/default1.png" data-src="http://www.bkjia.com/uploads/allimg/131016/061UI255-0.jpg" class="lazy" alt=""><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 src="/static/imghw/default1.png" data-src="http://www.bkjia.com/uploads/allimg/131016/061UIT1-1.jpg" class="lazy" alt=""><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">Nach dem Login kopieren</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"></font></pre><div class="contentsignin">Nach dem Login kopieren</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><font face="Courier New"> </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 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></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 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></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>*</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> </font></pre><div class="contentsignin">Nach dem Login kopieren</div></div>
<p><br></p>
<p><img src="/static/imghw/default1.png" data-src="http://www.bkjia.com/uploads/allimg/131016/061UH1N-3.gif" class="lazy" alt=""></p></span></span></span>
很有趣吧,呵呵..
Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Eine Anwendung, die XML direkt in PDF konvertiert, kann nicht gefunden werden, da es sich um zwei grundlegend unterschiedliche Formate handelt. XML wird zum Speichern von Daten verwendet, während PDF zur Anzeige von Dokumenten verwendet wird. Um die Transformation abzuschließen, können Sie Programmiersprachen und Bibliotheken wie Python und ReportLab verwenden, um XML -Daten zu analysieren und PDF -Dokumente zu generieren.

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.
