Heim Backend-Entwicklung PHP-Tutorial php等比缩放图片

php等比缩放图片

Jul 28, 2016 am 08:26 AM
break NIM param

步骤如下:
1.获取图片的基本信息
用这个getimagesize函数

2.判断图片资源类型并创建对应图片资源
用这个getPicType函数(自定义函数)

3.计算缩放比例
原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为1/4

4.计算缩放后的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
结果缩放后的图片变为200*150

5.创建目标图像资源
用这个imagecreatetruecolor函数,创建一个真彩的图像

6.等比缩放
用这个imagecopyresampled函数实现缩放

7.输出图像
用这个outputImage函数(自定义函数)

8.释放图片资源
用这个imagedestroy函数

缩放前后如图:
750*525
 php等比缩放图片
200*140
 php等比缩放图片

代码如下:

<code><span>/**
 *<span> @function</span> 等比缩放函数(以保存的方式实现)
 *<span> @param</span> string $picname 被缩放的处理图片源
 *<span> @param</span> int $maxX 缩放后图片的最大宽度
 *<span> @param</span> int $maxY 缩放后图片的最大高度
 *<span> @param</span> string $pre 缩放后图片名的前缀名
 *<span> @return</span> string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg
 */</span><span><span>function</span><span>scalePic</span><span>(<span>$picname</span>,<span>$maxX</span>=<span>100</span>,<span>$maxY</span>=<span>100</span>,<span>$pre</span>=<span>'s_'</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>); <span>//获取图片的基本信息</span><span>$width</span> = <span>$info</span>[<span>0</span>];<span>//获取宽度</span><span>$height</span> = <span>$info</span>[<span>1</span>];<span>//获取高度</span><span>//判断图片资源类型并创建对应图片资源</span><span>$im</span> = getPicType(<span>$info</span>[<span>2</span>],<span>$picname</span>);
    <span>//计算缩放比例</span><span>$scale</span> = (<span>$maxX</span>/<span>$width</span>)>(<span>$maxY</span>/<span>$height</span>)?<span>$maxY</span>/<span>$height</span>:<span>$maxX</span>/<span>$width</span>;
    <span>//计算缩放后的尺寸</span><span>$sWidth</span> = floor(<span>$width</span>*<span>$scale</span>);
    <span>$sHeight</span> = floor(<span>$height</span>*<span>$scale</span>);
    <span>//创建目标图像资源</span><span>$nim</span> = imagecreatetruecolor(<span>$sWidth</span>,<span>$sHeight</span>);
    <span>//等比缩放</span>
    imagecopyresampled(<span>$nim</span>,<span>$im</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>$sWidth</span>,<span>$sHeight</span>,<span>$width</span>,<span>$height</span>);
    <span>//输出图像</span><span>$newPicName</span> = outputImage(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>);
    <span>//释放图片资源</span>
    imagedestroy(<span>$im</span>);
    imagedestroy(<span>$nim</span>);
    <span>return</span><span>$newPicName</span>;
}

<span>/**
 * function 判断并返回图片的类型(以资源方式返回)
 *<span> @param</span> int $type 图片类型
 *<span> @param</span> string $picname 图片名字
 *<span> @return</span> 返回对应图片资源
 */</span><span><span>function</span><span>getPicType</span><span>(<span>$type</span>,<span>$picname</span>)</span>
{</span><span>$im</span>=<span>null</span>;
    <span>switch</span>(<span>$type</span>)
    {
        <span>case</span><span>1</span>:  <span>//GIF</span><span>$im</span> = imagecreatefromgif(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:  <span>//JPG</span><span>$im</span> = imagecreatefromjpeg(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:  <span>//PNG</span><span>$im</span> = imagecreatefrompng(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:  <span>//BMP</span><span>$im</span> = imagecreatefromwbmp(<span>$picname</span>);
            <span>break</span>;
        <span>default</span>:
            <span>die</span>(<span>"不认识图片类型"</span>);
            <span>break</span>;
    }
    <span>return</span><span>$im</span>;
}

<span>/**
 * function 输出图像
 *<span> @param</span> string $picname 图片名字
 *<span> @param</span> string $pre 新图片名前缀
 *<span> @param</span> resourse $nim 要输出的图像资源
 *<span> @return</span> 返回新的图片名
 */</span><span><span>function</span><span>outputImage</span><span>(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>);
    <span>$picInfo</span> = pathInfo(<span>$picname</span>);
    <span>$newPicName</span> = <span>$picInfo</span>[<span>'dirname'</span>].<span>'/'</span>.<span>$pre</span>.<span>$picInfo</span>[<span>'basename'</span>];<span>//输出文件的路径</span><span>switch</span>(<span>$info</span>[<span>2</span>])
    {
        <span>case</span><span>1</span>:
            imagegif(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:
            imagejpeg(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:
            imagepng(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:
            imagewbmp(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
    }
    <span>return</span><span>$newPicName</span>;
}</code>
Nach dem Login kopieren
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 php等比缩放图片,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

„AI Factory' wird die Neugestaltung des gesamten Software-Stacks vorantreiben, und NVIDIA stellt Llama3-NIM-Container für die Bereitstellung durch Benutzer bereit „AI Factory' wird die Neugestaltung des gesamten Software-Stacks vorantreiben, und NVIDIA stellt Llama3-NIM-Container für die Bereitstellung durch Benutzer bereit Jun 08, 2024 pm 07:25 PM

Laut Nachrichten dieser Website vom 2. Juni stellte Huang Renxun bei der laufenden Keynote-Rede von Huang Renxun 2024 Taipei Computex vor, dass generative künstliche Intelligenz die Neugestaltung des gesamten Software-Stacks fördern wird, und demonstrierte seine cloudnativen Mikrodienste NIM (Nvidia Inference Microservices). . Nvidia glaubt, dass die „KI-Fabrik“ eine neue industrielle Revolution auslösen wird: Am Beispiel der von Microsoft vorangetriebenen Softwareindustrie glaubt Huang Renxun, dass generative künstliche Intelligenz deren Umgestaltung im gesamten Stack vorantreiben wird. Um die Bereitstellung von KI-Diensten durch Unternehmen jeder Größe zu erleichtern, hat NVIDIA im März dieses Jahres die cloudnativen Mikrodienste NIM (Nvidia Inference Microservices) eingeführt. NIM+ ist eine Suite cloudnativer Mikroservices, die darauf optimiert sind, die Markteinführungszeit zu verkürzen

Lassen Sie uns darüber sprechen, in der PHP-Switch-Anweisung keine Pause zu verwenden Lassen Sie uns darüber sprechen, in der PHP-Switch-Anweisung keine Pause zu verwenden Mar 20, 2023 pm 04:55 PM

Es ist sehr üblich, in PHP Switch-Anweisungen zu verwenden, um mehrere Zweige auszuwählen. Normalerweise wird eine Break-Anweisung verwendet, um die Switch-Anweisung nach jedem Zweig zu verlassen. Es gibt jedoch Situationen, in denen wir die Break-Anweisung nicht verwenden möchten. In diesem Artikel wird die Situation vorgestellt, in der Break in der PHP-Switch-Anweisung nicht verwendet wird.

Was ist die Verwendung von break in PHP? Was ist die Verwendung von break in PHP? Jan 31, 2023 pm 07:33 PM

In PHP wird break verwendet, um aus der aktuellen Syntaxstruktur zu springen und die folgende Anweisung auszuführen. Es kann in Anweisungen wie switch, for, while und do while verwendet werden. Es kann den Code des Schleifenkörpers beenden und herausspringen der aktuellen Schleife sofort und führen Sie die folgenden Anweisungen nach dem Schleifencode aus. Die break-Anweisung kann einen Parameter n annehmen, der die Anzahl der Ebenen angibt, aus denen aus der Schleife gesprungen werden soll. Wenn Sie aus mehreren Schleifen springen möchten, können Sie n verwenden, um die Anzahl der Ebenen anzugeben, aus denen herausgesprungen werden soll Der Standardwert besteht darin, aus der aktuellen Schleife zu springen.

JS-Schleifenlernen: Brechen Sie die Schleifenanweisungen ab, unterbrechen Sie sie und fahren Sie fort JS-Schleifenlernen: Brechen Sie die Schleifenanweisungen ab, unterbrechen Sie sie und fahren Sie fort Aug 03, 2022 pm 07:08 PM

Im vorherigen Artikel haben wir Sie dazu gebracht, verschiedene Schleifenkontrollstrukturen in JS kennenzulernen (while- und do-while-Schleifen, for-Schleifen). Ich hoffe, dass dies hilfreich sein wird alle!

Wozu dient die Break-Stop-Anweisung in der Go-Sprache? Wozu dient die Break-Stop-Anweisung in der Go-Sprache? Jan 18, 2023 pm 03:46 PM

In der Go-Sprache wird die Break-Stop-Anweisung verwendet, um in einer Schleifenanweisung aus der Schleife zu springen und mit der Ausführung der Anweisung nach der Schleife zu beginnen. Die Break-Anweisung kann die Codeblöcke for, switch und select beenden. Darüber hinaus kann die Break-Anweisung auch eine Beschriftung nach der Anweisung hinzufügen, um das Verlassen des Codeblocks anzuzeigen, der einer bestimmten Beschriftung entspricht Codeblock von for, wechseln und auswählen.

Welche Funktion hat das Schlüsselwort break in Java? Welche Funktion hat das Schlüsselwort break in Java? Apr 23, 2023 am 10:13 AM

Hinweis 1. Die Funktion von break besteht darin, aus dem aktuellen Schleifenblock (for, while, dowhile) oder Programmblock (switch) zu springen. 2. Die Funktion des Schleifenblocks besteht darin, aus dem Schleifenkörper zu springen, der sich aktuell in der Schleife befindet. Die Funktion des Programmblocks besteht darin, die nächste Fallbedingung zu unterbrechen und zu vergleichen. Verwenden Sie break in einer Switch-Anweisung, um die Switch-Anweisung zu beenden. Wenn break in einer Schleife verwendet wird, wird die Schleife verlassen. Es macht keinen Sinn, break an anderer Stelle zu verwenden. Beispiel intsum=0;inti;for(i=1;i

Was ist Linux-Parameter? Was ist Linux-Parameter? Mar 10, 2023 am 08:58 AM

Linux param bezieht sich auf die Funktion „module_param“, die zum Übergeben von Befehlszeilenparametern verwendet wird. Beim Programmieren im Benutzermodus können Befehlszeilenparameter über die Parameter von „main()“ übergeben werden. Beim Schreiben eines Kernelmoduls können „ module_param()“, um Parameter zu übergeben.

Die Funktion und Vorsichtsmaßnahmen der Break-Anweisung in PHP Die Funktion und Vorsichtsmaßnahmen der Break-Anweisung in PHP Mar 20, 2024 pm 05:33 PM

Die Rolle und Vorsichtsmaßnahmen der Break-Anweisung in PHP In der PHP-Programmierung ist die Break-Anweisung eine Steueranweisung, die verwendet wird, um die Ausführung einer Schleife oder Switch-Anweisung zu unterbrechen. Die Break-Anweisung kann sofort aus der aktuellen Schleife oder Switch-Anweisung springen, sodass der Programmausführungsfluss direkt zum Codeteil nach der Schleife oder Switch-Anweisung springen kann, wodurch die Effizienz und Flexibilität der Programmausführung verbessert wird. In der tatsächlichen Programmierung spielt die Break-Anweisung eine wichtige Rolle, erfordert jedoch auch die Beachtung einiger Details und Vorsichtsmaßnahmen. 1.b

See all articles