php 打包gd 库

Jun 13, 2016 pm 12:18 PM
height image name width

php 封装gd 库

使用sae 版 thinkphp 在本地和sae 上无法实现缩略图,缩略图主要使用在瀑布流上面,不然一张图片2 3 M,速度太慢,就自己封装了一个,见笑!

<code class=" hljs xml"><span class="php"><span class="hljs-preprocessor"><?php</span><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Thumb</span>{</span>    <span class="hljs-comment">// 设置最大宽度,用来在编辑器中使用和显示</span>    <span class="hljs-keyword">private</span>  <span class="hljs-variable">$max_width</span>  = <span class="hljs-keyword">null</span>;    <span class="hljs-keyword">private</span>  <span class="hljs-variable">$file_name</span>  = <span class="hljs-keyword">null</span>;    <span class="hljs-keyword">private</span>  <span class="hljs-variable">$water_name</span> = <span class="hljs-keyword">null</span>;    <span class="hljs-comment">//获得文件名和图片宽度</span>    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">__construct</span><span class="hljs-params">(<span class="hljs-variable">$max_widht</span>,<span class="hljs-variable">$file_name</span>,<span class="hljs-variable">$water_name</span>)</span> {</span>        <span class="hljs-variable">$this</span>->max_width  = <span class="hljs-variable">$max_widht</span>;        <span class="hljs-variable">$this</span>->file_name  = <span class="hljs-variable">$file_name</span>;        <span class="hljs-variable">$this</span>->water_name = <span class="hljs-variable">$water_name</span>;    }    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">create_image</span><span class="hljs-params">()</span>{</span>        <span class="hljs-comment">// 获得ori图片信息</span>        <span class="hljs-keyword">list</span>(<span class="hljs-variable">$width</span>,<span class="hljs-variable">$height</span>,<span class="hljs-variable">$type</span>) = getimagesize(<span class="hljs-variable">$this</span>->file_name);              <span class="hljs-comment">// 当原有图片大于 要求的最大宽度时,才需要进行压缩</span>        <span class="hljs-keyword">if</span>(<span class="hljs-variable">$width</span> > <span class="hljs-variable">$this</span>->max_width){            <span class="hljs-comment">// 获得图片压缩百分比</span>            <span class="hljs-variable">$per</span> = <span class="hljs-variable">$this</span>->max_width / <span class="hljs-variable">$width</span>;            <span class="hljs-variable">$new_width</span> = <span class="hljs-variable">$width</span> * <span class="hljs-variable">$per</span>;            <span class="hljs-variable">$new_height</span> = <span class="hljs-variable">$height</span> * <span class="hljs-variable">$per</span>;                  }<span class="hljs-keyword">else</span>{            <span class="hljs-variable">$new_height</span> =  <span class="hljs-variable">$height</span>;            <span class="hljs-variable">$new_width</span>  =  <span class="hljs-variable">$width</span>;        }        <span class="hljs-comment">//创建一个真彩色图像</span>        <span class="hljs-variable">$image_p</span> = imagecreatetruecolor(<span class="hljs-variable">$new_width</span>, <span class="hljs-variable">$new_height</span> -<span class="hljs-number">10</span>);        <span class="hljs-variable">$image</span> = <span class="hljs-variable">$this</span>->image_obj(<span class="hljs-variable">$type</span>,  <span class="hljs-variable">$this</span>->file_name);         imagecopyresampled(<span class="hljs-variable">$image_p</span>, <span class="hljs-variable">$image</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-variable">$new_width</span>, <span class="hljs-variable">$new_height</span>, <span class="hljs-variable">$width</span>, <span class="hljs-variable">$height</span>);        <span class="hljs-variable">$this</span>->image_dump(<span class="hljs-variable">$type</span>, <span class="hljs-variable">$image_p</span>, <span class="hljs-variable">$this</span>->file_name);        <span class="hljs-variable">$this</span>->water();    }    <span class="hljs-comment">/*     * 生成为图片添加水印     */</span>    <span class="hljs-keyword">private</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">water</span><span class="hljs-params">()</span>{</span>        <span class="hljs-variable">$water_name</span> = <span class="hljs-variable">$this</span>->water_name;        <span class="hljs-variable">$dist_name</span> = <span class="hljs-variable">$this</span>->file_name;        <span class="hljs-keyword">list</span>(<span class="hljs-variable">$dist_width</span>,<span class="hljs-variable">$dist_height</span>,<span class="hljs-variable">$type</span>) = getimagesize(<span class="hljs-variable">$dist_name</span>);        <span class="hljs-variable">$dist_im</span>   = <span class="hljs-variable">$this</span>->image_obj(<span class="hljs-variable">$type</span>, <span class="hljs-variable">$this</span>->file_name);        <span class="hljs-variable">$water_name</span> = <span class="hljs-string">"D:/xampps/htdocs/buyingfeiblog/1/App/Modules/Admin/Tpl/Public/Images/water.png"</span>;        <span class="hljs-keyword">list</span>(<span class="hljs-variable">$w_width</span>,<span class="hljs-variable">$w_height</span>) = getimagesize(<span class="hljs-variable">$water_name</span>); <span class="hljs-comment">// 获得图片水印信息</span>        <span class="hljs-variable">$water_src</span> =  imagecreatefrompng(<span class="hljs-variable">$water_name</span>);        <span class="hljs-comment">// 设置图片水印位置 在右下角</span>        <span class="hljs-variable">$x</span> = (<span class="hljs-variable">$dist_width</span> - <span class="hljs-variable">$w_width</span>) / <span class="hljs-number">4</span> * <span class="hljs-number">3</span> ;        <span class="hljs-variable">$y</span> =(<span class="hljs-variable">$dist_height</span> - <span class="hljs-variable">$w_height</span>) /<span class="hljs-number">4</span> * <span class="hljs-number">3</span> ;        <span class="hljs-keyword">if</span>(imagecopy(<span class="hljs-variable">$dist_im</span>, <span class="hljs-variable">$water_src</span>, <span class="hljs-variable">$x</span>, <span class="hljs-variable">$y</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-variable">$w_width</span>, <span class="hljs-variable">$w_height</span>)){            imagepng(<span class="hljs-variable">$dist_im</span>,<span class="hljs-variable">$dist_name</span>);            <span class="hljs-keyword">echo</span> <span class="hljs-string">"success"</span>;        }<span class="hljs-keyword">else</span>{            <span class="hljs-keyword">echo</span> <span class="hljs-string">"error"</span>;        }    }    <span class="hljs-comment">// 生成图片类型,生成不同图片 保持图片原本类型不发生变化</span>    <span class="hljs-keyword">private</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">image_dump</span><span class="hljs-params">(<span class="hljs-variable">$type</span>,<span class="hljs-variable">$image_p</span>,<span class="hljs-variable">$filename</span>)</span>{</span>         <span class="hljs-keyword">switch</span> (<span class="hljs-variable">$type</span>){            <span class="hljs-keyword">case</span> <span class="hljs-number">1</span>:                imagegif(<span class="hljs-variable">$image_p</span>, <span class="hljs-variable">$filename</span>);                <span class="hljs-variable">$dis_im</span> = imagecreatefromgif(file_name);                <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">case</span> <span class="hljs-number">2</span>:                imagejpeg(<span class="hljs-variable">$image_p</span>,  <span class="hljs-variable">$this</span>->file_name);                <span class="hljs-variable">$dis_im</span> = imagecreatefromjpeg(file_name);                 <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">case</span> <span class="hljs-number">3</span>:                imagepng(<span class="hljs-variable">$image_p</span>,file_name);                <span class="hljs-variable">$dis_im</span> = imagecreatefrompng(file_name);                <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">default</span> :        }    }    <span class="hljs-comment">// 根据图片不同,生成不同资源对象</span>    <span class="hljs-keyword">private</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">image_obj</span><span class="hljs-params">(<span class="hljs-variable">$type</span>,<span class="hljs-variable">$filename</span>)</span>{</span>         <span class="hljs-keyword">switch</span> (<span class="hljs-variable">$type</span>){<span class="hljs-comment">//          1 = GIF,2 = JPG,3 = PNG,</span>            <span class="hljs-keyword">case</span> <span class="hljs-number">1</span>:               <span class="hljs-variable">$image</span> =   imagecreatefromgif(<span class="hljs-variable">$filename</span>);              <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">case</span> <span class="hljs-number">2</span>:               <span class="hljs-variable">$image</span> =   imagecreatefromjpeg(<span class="hljs-variable">$filename</span>);              <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">case</span> <span class="hljs-number">3</span>:               <span class="hljs-variable">$image</span> =   imagecreatefrompng(<span class="hljs-variable">$filename</span>);               <span class="hljs-keyword">break</span>;            <span class="hljs-keyword">default</span> :        }        <span class="hljs-keyword">return</span> <span class="hljs-variable">$image</span>;    }}    <span class="hljs-variable">$thumb</span> = <span class="hljs-keyword">new</span>  Thumb(<span class="hljs-number">725</span>,<span class="hljs-string">"D:/xampps/htdocs/test/test.jpg"</span>);    <span class="hljs-variable">$thumb</span>->create_image();<span class="hljs-comment">//create_image</span><span class="hljs-preprocessor">?></span></span></code>
Copier après la connexion

就是这么简单,
主要包括生成真彩图,
创建图形对象资源
图片进行合并,ok!

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.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment utiliser Bing Image Creator gratuitement Comment utiliser Bing Image Creator gratuitement Feb 27, 2024 am 11:04 AM

Cet article présente sept façons d'obtenir une sortie de haute qualité à l'aide du logiciel gratuit BingImageCreator. BingImageCreator (maintenant connu sous le nom d'ImageCreator pour Microsoft Designer) est l'un des grands générateurs d'art d'intelligence artificielle en ligne. Il génère des effets visuels très réalistes basés sur les invites de l'utilisateur. Plus vos invites sont spécifiques, claires et créatives, meilleurs seront les résultats. BingImageCreator a fait des progrès significatifs dans la création d'images de haute qualité. Il utilise désormais le mode d'entraînement Dall-E3, affichant un niveau de détail et de réalisme plus élevé. Cependant, sa capacité à produire des résultats HD de manière cohérente dépend de plusieurs facteurs, notamment la rapidité

Comment supprimer des images des téléphones Xiaomi Comment supprimer des images des téléphones Xiaomi Mar 02, 2024 pm 05:34 PM

Comment supprimer des images sur les téléphones mobiles Xiaomi ? Vous pouvez supprimer des images sur les téléphones mobiles Xiaomi, mais la plupart des utilisateurs ne savent pas comment supprimer des images. Voici ensuite le didacticiel sur la façon de supprimer des images sur les téléphones mobiles Xiaomi proposé par l'éditeur. pouvez venir nous rejoindre. Voyons! Comment supprimer des images sur le téléphone mobile Xiaomi 1. Ouvrez d'abord la fonction [Album] dans le téléphone mobile Xiaomi ; 2. Vérifiez ensuite les images inutiles et cliquez sur le bouton [Supprimer] dans le coin inférieur droit ; en haut pour accéder à la zone spéciale, sélectionnez [Corbeille] ; 4. Cliquez ensuite directement sur [Vider la corbeille] comme indiqué dans la figure ci-dessous. 5. Enfin, cliquez directement sur [Suppression permanente] pour terminer.

Que signifie la largeur du HTML ? Que signifie la largeur du HTML ? Jun 03, 2021 pm 02:15 PM

En HTML5, width signifie width. L'attribut width définit la largeur de la zone de contenu de l'élément. Vous pouvez ajouter des marges intérieures, des bordures et des marges extérieures en dehors de la zone de contenu. élément.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Installation d'Imagemagic Tutoriel d'installation de Centos et Image Installation d'Imagemagic Tutoriel d'installation de Centos et Image Feb 12, 2024 pm 05:27 PM

LINUX est un système d'exploitation open source. Sa flexibilité et sa personnalisation en font le premier choix de nombreux développeurs et administrateurs système. Dans le système LINUX, le traitement d'image est une tâche très importante, et Imagemagick et Image sont deux outils de traitement d'image très populaires. L'article vous expliquera comment installer Imagemagick et Image dans le système Centos et fournira des didacticiels d'installation détaillés. Installation d'Imagemagic Tutoriel Centos Imagemagick est un puissant ensemble d'outils de traitement d'image, qui peut effectuer diverses opérations sur les images sous la ligne de commande. Voici les étapes pour installer Imagemagick sur le système Centos : 1.

Explication détaillée des propriétés des dimensions CSS : hauteur et largeur Explication détaillée des propriétés des dimensions CSS : hauteur et largeur Oct 21, 2023 pm 12:42 PM

Explication détaillée des propriétés des dimensions CSS : hauteur et largeur Dans le développement front-end, CSS est un puissant langage de définition de style. Parmi eux, la hauteur et la largeur sont les deux attributs de dimension les plus élémentaires, utilisés pour définir la hauteur et la largeur de l'élément. Cet article analysera ces deux propriétés en détail et fournira des exemples de code spécifiques. 1. Attribut Height L'attribut height est utilisé pour définir la hauteur d'un élément. Vous pouvez utiliser le pixel, le pourcentage ou

Quelles sont les méthodes pour exprimer la valeur de la largeur en CSS ? Quelles sont les méthodes pour exprimer la valeur de la largeur en CSS ? Nov 13, 2023 pm 05:47 PM

Les méthodes incluent la valeur de pixel, le pourcentage, l'unité em, l'unité rem, l'unité vw/vh, auto, fit-content, min-content, max-content. Introduction détaillée : 1. Valeur du pixel (px) : La valeur du pixel est fixe et sa largeur reste inchangée quelle que soit la façon dont la résolution de l'écran change. Par exemple : width : 300px ; 2. Pourcentage (%) : le pourcentage de largeur est relatif à la largeur de l'élément parent. Par exemple : largeur : 50 % ; 3, unité em, etc.

Que dois-je faire si php ne parvient pas à obtenir le nom ? Que dois-je faire si php ne parvient pas à obtenir le nom ? Nov 24, 2022 am 09:56 AM

PHP ne peut pas obtenir le nom car lorsque les valeurs de nom et d'identifiant de l'élément de formulaire sont différentes, le navigateur ne peut pas le reconnaître. La solution : 1. Vérifiez si certains éléments de formulaire et éléments de cadre utilisent le nom ; se voir attribuer un identifiant mais pas un nom ; 3. Pour la case à cocher à sélection multiple, vous pouvez utiliser "join(',', $__POST['name'])" pour former des données.

See all articles