首頁 後端開發 php教程 php 打包gd 库

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>
登入後複製

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
如何免費使用Bing Image Creator 如何免費使用Bing Image Creator Feb 27, 2024 am 11:04 AM

本文將介紹七種利用免費的BingImageCreator獲得高品質輸出的方法。 BingImageCreator(現稱為MicrosoftDesigner的ImageCreator)是一個出色的線上人工智慧藝術生成器之一。它能根據使用者的提示產生高度逼真的視覺效果。提示越具體、清晰和創意,生成的效果也會更出色。 BingImageCreator在創建高品質影像方面取得了重大進展。現在它使用Dall-E3訓練模式,顯示出更高水準的細節和現實主義。然而,它能否始終如一地產生高清結果取決於幾個因素,包括快速

小米手機image怎麼刪除 小米手機image怎麼刪除 Mar 02, 2024 pm 05:34 PM

小米手機image怎麼刪除?在小米手機中是可以刪除image,但是多數的用戶不知道image如何的刪除,接下來就是小編為用戶帶來的小米手機image刪除方法教程,感興趣的用戶快來一起看看吧!小米手機image怎麼刪除1、先打開小米手機中的【相簿】功能;2、然後勾選不需要的圖片,點擊右下角的【刪除】按鈕;3、之後點擊最頂部的【相簿】進入到專區,選擇【回收站】;4、接著直接點選下圖所示的【清空回收站】;5、最後直接點選【永久刪除】即可完成。

html的width是什麼意思 html的width是什麼意思 Jun 03, 2021 pm 02:15 PM

在html5中,width的意思是寬度,width屬性定義元素內容區的寬度,在內容區外面可以增加內邊距、邊框和外邊距,只需要給元素設定「元素{width:數值}」即可。

Imagemagic安裝Centos及Image安裝教學課程 Imagemagic安裝Centos及Image安裝教學課程 Feb 12, 2024 pm 05:27 PM

LINUX是一種開源的作業系統,它的靈活性和可自訂性使得它成為了許多開發者和系統管理員的首選,在LINUX系統中,映像處理是一個非常重要的任務,而Imagemagick和Image是兩個非常受歡迎的影像處理工具,本文將為您介紹如何在Centos系統中安裝Imagemagick和Image,並提供詳細的安裝教學。 Imagemagic安裝Centos教學Imagemagick是一個功能強大的影像處理工具集,它可以在命令列下執行各種映像操作,以下是在Centos系統上安裝Imagemagick的步驟:1

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

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

CSS 維度屬性詳解:height 與 width CSS 維度屬性詳解:height 與 width Oct 21, 2023 pm 12:42 PM

CSS維度屬性詳解:height和width在前端開發中,CSS是一種強大的樣式定義語言。其中,height和width是兩個最基本的維度屬性,用來定義元素的高度和寬度。本文將對這兩個屬性進行詳細解析,並提供具體的程式碼範例。一、height屬性height屬性用來定義元素的高度。可以使用像素(pixel)、百分比(percentage)或

php拿不到name怎麼辦 php拿不到name怎麼辦 Nov 24, 2022 am 09:56 AM

php拿不到name是因為當表單元素的name和id的值不一樣的時候,瀏覽器是不能識別的,其解決方法:1、檢查部分錶單元素和框架元素是否用了name;2、檢查只能賦ID不能賦name的元素;3、針對多重選取框checkbox,可使用「join(',', $__POST['name'])」組成資料。

在PHP中的imagefilledrectangle()函數 在PHP中的imagefilledrectangle()函數 Aug 30, 2023 am 09:05 AM

imagefilledrectangle()函數繪製一個填滿矩形。語法imagefilledrectangle($img,$x1,$y1,$x2,$y2,$color)參數image 使用imagecreatetruecolor()建立空白影像。 x1點1的x座標。 y1 點1的y座標。 x2 點2的x座標。 y2 點2的y座標。 color 填滿顏色。傳回值imagefilledrectangle()函數成功返

See all articles