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>
Copier après la connexion
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

« AI Factory » favorisera la refonte de l'ensemble de la pile logicielle, et NVIDIA fournit des conteneurs Llama3 NIM que les utilisateurs peuvent déployer « AI Factory » favorisera la refonte de l'ensemble de la pile logicielle, et NVIDIA fournit des conteneurs Llama3 NIM que les utilisateurs peuvent déployer Jun 08, 2024 pm 07:25 PM

Selon les informations de ce site le 2 juin, lors du discours d'ouverture du Huang Renxun 2024 Taipei Computex, Huang Renxun a présenté que l'intelligence artificielle générative favoriserait la refonte de l'ensemble de la pile logicielle et a démontré ses microservices cloud natifs NIM (Nvidia Inference Microservices). . Nvidia estime que « l'usine IA » déclenchera une nouvelle révolution industrielle : en prenant comme exemple l'industrie du logiciel lancée par Microsoft, Huang Renxun estime que l'intelligence artificielle générative favorisera sa refonte complète. Pour faciliter le déploiement de services d'IA par les entreprises de toutes tailles, NVIDIA a lancé les microservices cloud natifs NIM (Nvidia Inference Microservices) en mars de cette année. NIM+ est une suite de microservices cloud natifs optimisés pour réduire les délais de commercialisation

Quelle est la fonction du mot-clé break en Java ? Quelle est la fonction du mot-clé break en Java ? Apr 23, 2023 am 10:13 AM

Remarque 1. La fonction de break est de sortir du bloc de boucle actuel (for, while, dowhile) ou du bloc de programme (switch). 2. La fonction du bloc de boucle est de sortir du corps de la boucle actuellement dans la boucle. La fonction du bloc de programme est d'interrompre et de comparer la condition suivante du cas. Utilisez break dans une instruction switch pour terminer l’instruction switch. Lorsque break est utilisé dans une boucle, il sort de la boucle. Cela ne sert à rien d’utiliser break ailleurs. Exemple intsum=0;inti;for(i=1;i

Parlons de ne pas utiliser break dans l'instruction PHP switch Parlons de ne pas utiliser break dans l'instruction PHP switch Mar 20, 2023 pm 04:55 PM

Il est très courant d'utiliser des instructions switch en PHP pour sélectionner plusieurs branches. Habituellement, une instruction break est utilisée pour quitter l'instruction switch après chaque branche. Cependant, il existe des situations dans lesquelles nous ne souhaitons pas utiliser l'instruction break. Cet article présentera la situation de non-utilisation de break dans l'instruction switch PHP.

Apprentissage en boucle JS : les instructions de sortie de boucle s'interrompent et continuent Apprentissage en boucle JS : les instructions de sortie de boucle s'interrompent et continuent Aug 03, 2022 pm 07:08 PM

Dans l'article précédent, nous vous avons amené à apprendre plusieurs structures de contrôle de boucle en JS (boucles while et do-while, boucles for). Parlons des instructions break et continue pour sortir de la boucle. tout le monde!

A quoi sert break en php A quoi sert break en php Jan 31, 2023 pm 07:33 PM

En PHP, break est utilisé pour sortir de la structure syntaxique actuelle et exécuter l'instruction suivante ; il peut être utilisé dans des instructions telles que switch, for, while et do while. Il peut terminer le code du corps de la boucle et en sortir. de la boucle actuelle immédiatement et exécutez les instructions suivantes après le code de la boucle. L'instruction break peut prendre un paramètre n, indiquant le nombre de niveaux à sortir de la boucle. Si vous souhaitez sortir de plusieurs boucles, vous pouvez utiliser n pour indiquer le nombre de niveaux à quitter. paramètre, la valeur par défaut est de sortir de la boucle actuelle.

À quoi sert l'instruction break stop en langage Go ? À quoi sert l'instruction break stop en langage Go ? Jan 18, 2023 pm 03:46 PM

Dans le langage Go, l'instruction break stop est utilisée pour sortir de la boucle dans une instruction en boucle et commencer à exécuter l'instruction après la boucle. L'instruction break peut terminer les blocs de code de for, switch et select. De plus, l'instruction break peut également ajouter une étiquette après l'instruction pour indiquer la sortie du bloc de code correspondant à une certaine étiquette. bloc de code de for, switch et select.

qu'est-ce que le paramètre Linux qu'est-ce que le paramètre Linux Mar 10, 2023 am 08:58 AM

Le paramètre Linux fait référence à la fonction "module_param", qui est utilisée pour transmettre les paramètres de ligne de commande ; lors de la programmation en mode utilisateur, les paramètres de ligne de commande peuvent être transmis via les paramètres de "main()", et lors de l'écriture d'un module du noyau, transmettre " module_param()" pour transmettre les paramètres.

La fonction et les précautions de l'instruction break en PHP La fonction et les précautions de l'instruction break en PHP Mar 20, 2024 pm 05:33 PM

Le rôle et les précautions de l'instruction break en PHP En programmation PHP, l'instruction break est une instruction de contrôle utilisée pour interrompre l'exécution d'une instruction loop ou switch. L'instruction break peut immédiatement sortir de la boucle ou de l'instruction switch actuelle, permettant au flux d'exécution du programme de passer directement à la partie de code après l'instruction loop ou switch, améliorant ainsi l'efficacité et la flexibilité de l'exécution du programme. Dans la programmation réelle, l'instruction break joue un rôle important, mais elle nécessite également de prêter attention à certains détails et précautions. 1.b

See all articles