php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)_PHP教程
一、创建图片资源
imagecreatetruecolor(width,height);
imagecreatefromgif(图片名称);
imagecreatefrompng(图片名称);
imagecreatefromjpeg(图片名称);画出各种图像 imagegif(图片资源,保存路径);
imagepng()
imagejpeg();
二、获取图片属性
imagesx(res//宽度
imagesy(res//高度
getimagesize(文件路径)
返回一个具有四个单元的数组。索引 0 包含图像宽度的像素值,索引 1 包含图像高度的像素值。索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。这些标记与 PHP 4.3.0 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记。
销毁图像资源
imagedestroy(图片资源);
三、透明处理
PNG、jpeg透明色都正常,只有gif不正常
imagecolortransparent(resource image [,int color])//将某个颜色设置成透明色
imagecolorstotal()
imagecolorforindex();
四、图片的裁剪
imagecopyresized()
imagecopyresampled();
五、加水印(文字、图片)
字符串编码转换string iconv ( string $in_charset , string $out_charset , string $str )
六、图片旋转
imagerotate();//制定角度的图片翻转
七、图片的翻转
沿X轴 沿Y轴翻转
八、锐化
imagecolorsforindex()
imagecolorat()
在图片上画图形 $img=imagecreatefromgif("./images/map.gif");
<span 1</span> <?<span PHP </span><span 2</span> <span /*</span><span * </span><span 3</span> <span * 图片锐化处理 </span><span 4</span> <span * edit by www.jbxue.com </span><span 5</span> <span */</span> <span 6</span> <span $red</span>= imagecolorallocate(<span $img</span>, 255, 0, 0<span ); </span><span 7</span> <span 8</span> imageline(<span $img</span>, 0, 0, 100, 100, <span $red</span><span ); </span><span 9</span> imageellipse(<span $img</span>, 200, 100, 100, 100, <span $red</span><span ); </span><span 10</span> imagegif(<span $img</span>, "./images/map2.gif"<span ); </span><span 11</span> imagedestroy(<span $img</span><span ); </span><span 12</span> <span 图片普通缩放 </span><span 13</span> 复制代码 代码如下: <span 14</span> <span 15</span> <span $filename</span>="./images/hee.jpg"<span ; </span><span 16</span> <span $per</span>=0.3<span ; </span><span 17</span> <span list</span>(<span $width</span>, <span $height</span>)=<span getimagesize</span>(<span $filename</span><span ); </span><span 18</span> <span $n_w</span>=<span $width</span>*<span $per</span><span ; </span><span 19</span> <span $n_h</span>=<span $width</span>*<span $per</span><span ; </span><span 20</span> <span $new</span>=imagecreatetruecolor(<span $n_w</span>, <span $n_h</span><span ); </span><span 21</span> <span $img</span>=imagecreatefromjpeg(<span $filename</span><span ); </span><span 22</span> <span //</span><span 拷贝部分图像并调整</span> <span 23</span> imagecopyresized(<span $new</span>, <span $img</span>,0, 0,0, 0,<span $n_w</span>, <span $n_h</span>, <span $width</span>, <span $height</span><span ); </span><span 24</span> <span //</span><span 图像输出新图片、另存为</span> <span 25</span> imagejpeg(<span $new</span>, "./images/hee2.jpg"<span ); </span><span 26</span> imagedestroy(<span $new</span><span ); </span><span 27</span> imagedestroy(<span $img</span><span ); </span><span 28</span> <span 29</span> <span 图片等比例缩放、没处理透明色 </span><span 30</span> 复制代码 代码如下: <span 31</span> <span 32</span> <span function</span> thumn(<span $background</span>, <span $width</span>, <span $height</span>, <span $newfile</span><span ) { </span><span 33</span> <span list</span>(<span $s_w</span>, <span $s_h</span>)=<span getimagesize</span>(<span $background</span>);<span //</span><span 获取原图片高度、宽度</span> <span 34</span> <span if</span> (<span $width</span> && (<span $s_w</span> < <span $s_h</span><span )) { </span><span 35</span> <span $width</span> = (<span $height</span> / <span $s_h</span>) * <span $s_w</span><span ; </span><span 36</span> } <span else</span><span { </span><span 37</span> <span $height</span> = (<span $width</span> / <span $s_w</span>) * <span $s_h</span><span ; </span><span 38</span> <span } </span><span 39</span> <span $new</span>=imagecreatetruecolor(<span $width</span>, <span $height</span><span ); </span><span 40</span> <span $img</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span 41</span> imagecopyresampled(<span $new</span>, <span $img</span>, 0, 0, 0, 0, <span $width</span>, <span $height</span>, <span $s_w</span>, <span $s_h</span><span ); </span><span 42</span> imagejpeg(<span $new</span>, <span $newfile</span><span ); </span><span 43</span> imagedestroy(<span $new</span><span ); </span><span 44</span> imagedestroy(<span $img</span><span ); </span><span 45</span> <span } </span><span 46</span> thumn("images/hee.jpg", 200, 200, "./images/hee3.jpg"<span ); </span><span 47</span> <span 48</span> <span gif透明色处理 </span><span 49</span> 复制代码 代码如下: <span 50</span> <span 51</span> <span function</span> thumn(<span $background</span>, <span $width</span>, <span $height</span>, <span $newfile</span><span ) { </span><span 52</span> <span list</span>(<span $s_w</span>, <span $s_h</span>)=<span getimagesize</span>(<span $background</span><span ); </span><span 53</span> <span if</span> (<span $width</span> && (<span $s_w</span> < <span $s_h</span><span )) { </span><span 54</span> <span $width</span> = (<span $height</span> / <span $s_h</span>) * <span $s_w</span><span ; </span><span 55</span> } <span else</span><span { </span><span 56</span> <span $height</span> = (<span $width</span> / <span $s_w</span>) * <span $s_h</span><span ; </span><span 57</span> <span } </span><span 58</span> <span $new</span>=imagecreatetruecolor(<span $width</span>, <span $height</span><span ); </span><span 59</span> <span $img</span>=imagecreatefromgif(<span $background</span><span ); </span><span 60</span> <span $otsc</span>=imagecolortransparent(<span $img</span><span ); </span><span 61</span> <span if</span>(<span $otsc</span> >=0 && <span $otst</span> < imagecolorstotal(<span $img</span>)){<span //</span><span 判断索引色</span> <span 62</span> <span $tran</span>=imagecolorsforindex(<span $img</span>, <span $otsc</span>);<span //</span><span 索引颜色值</span> <span 63</span> <span $newt</span>=imagecolorallocate(<span $new</span>, <span $tran</span>["red"], <span $tran</span>["green"], <span $tran</span>["blue"<span ]); </span><span 64</span> imagefill(<span $new</span>, 0, 0, <span $newt</span><span ); </span><span 65</span> imagecolortransparent(<span $new</span>, <span $newt</span><span ); </span><span 66</span> <span } </span><span 67</span> imagecopyresized(<span $new</span>, <span $img</span>, 0, 0, 0, 0, <span $width</span>, <span $height</span>, <span $s_w</span>, <span $s_h</span><span ); </span><span 68</span> imagegif(<span $new</span>, <span $newfile</span><span ); </span><span 69</span> imagedestroy(<span $new</span><span ); </span><span 70</span> imagedestroy(<span $img</span><span ); </span><span 71</span> <span } </span><span 72</span> thumn("images/map.gif", 200, 200, "./images/map3.gif");
<?<span php </span><span /*</span><span * * 图片裁剪处理 * edit by www.jbxue.com </span><span */</span> <span function</span> cut(<span $background</span>, <span $cut_x</span>, <span $cut_y</span>, <span $cut_width</span>, <span $cut_height</span>, <span $location</span><span ){ </span><span $back</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span $new</span>=imagecreatetruecolor(<span $cut_width</span>, <span $cut_height</span><span ); imagecopyresampled(</span><span $new</span>, <span $back</span>, 0, 0, <span $cut_x</span>, <span $cut_y</span>, <span $cut_width</span>, <span $cut_height</span>,<span $cut_width</span>,<span $cut_height</span><span ); imagejpeg(</span><span $new</span>, <span $location</span><span ); imagedestroy(</span><span $new</span><span ); imagedestroy(</span><span $back</span><span ); } cut(</span>"./images/hee.jpg", 440, 140, 117, 112, "./images/hee5.jpg"<span ); </span>?>
文字水印
<span 1</span> <?<span PHP </span><span 2</span> <span /*</span><span * </span><span 3</span> <span * </span><span 4</span> <span * 图片添加文字水印 </span><span 5</span> <span */</span> <span 6</span> <span 7</span> <span function</span> mark_text(<span $background</span>, <span $text</span>, <span $x</span>, <span $y</span><span ){ </span><span 8</span> <span $back</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span 9</span> <span $color</span>=imagecolorallocate(<span $back</span>, 0, 255, 0<span ); </span><span 10</span> imagettftext(<span $back</span>, 20, 0, <span $x</span>, <span $y</span>, <span $color</span>, "simkai.ttf", <span $text</span><span ); </span><span 11</span> imagejpeg(<span $back</span>, "./images/hee7.jpg"<span ); </span><span 12</span> imagedestroy(<span $back</span><span ); </span><span 13</span> <span } </span><span 14</span> mark_text("./images/hee.jpg", "细说PHP", 150, 250<span ); </span><span 15</span> <span //</span><span 图片水印</span> <span 16</span> <span function</span> mark_pic(<span $background</span>, <span $waterpic</span>, <span $x</span>, <span $y</span><span ){ </span><span 17</span> <span $back</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span 18</span> <span $water</span>=imagecreatefromgif(<span $waterpic</span><span ); </span><span 19</span> <span $w_w</span>=imagesx(<span $water</span><span ); </span><span 20</span> <span $w_h</span>=imagesy(<span $water</span><span ); </span><span 21</span> imagecopy(<span $back</span>, <span $water</span>, <span $x</span>, <span $y</span>, 0, 0, <span $w_w</span>, <span $w_h</span><span ); </span><span 22</span> imagejpeg(<span $back</span>,"./images/hee8.jpg"<span ); </span><span 23</span> imagedestroy(<span $back</span><span ); </span><span 24</span> imagedestroy(<span $water</span><span ); </span><span 25</span> <span } </span><span 26</span> mark_pic("./images/hee.jpg", "./images/gaolf.gif", 50, 200);
图片旋转
<span 1</span> <?<span PHP </span><span 2</span> <span /*</span><span * </span><span 3</span> <span * 图片旋转 </span><span 4</span> <span * edit by www.jbxue.com </span><span 5</span> <span */</span> <span 6</span> <span $back</span>=imagecreatefromjpeg("./images/hee.jpg"<span ); </span><span 7</span> <span 8</span> <span $new</span>=imagerotate(<span $back</span>, 45, 0<span ); </span><span 9</span> imagejpeg(<span $new</span>, "./images/hee9.jpg"<span ); </span><span 10</span> ?>
<span 1</span> <?<span php </span><span 2</span> <span /*</span><span * </span><span 3</span> <span * 图片水平翻转 垂直翻转 </span><span 4</span> <span * edit by www.jbxue.com </span><span 5</span> <span */</span> <span 6</span> <span function</span> turn_y(<span $background</span>, <span $newfile</span><span ){ </span><span 7</span> <span 8</span> <span $back</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span 9</span> <span $width</span>=imagesx(<span $back</span><span ); </span><span 10</span> <span $height</span>=imagesy(<span $back</span><span ); </span><span 11</span> <span $new</span>=imagecreatetruecolor(<span $width</span>, <span $height</span><span ); </span><span 12</span> <span for</span>(<span $x</span>=0; <span $x</span> < <span $width</span>; <span $x</span>++<span ){ </span><span 13</span> imagecopy(<span $new</span>, <span $back</span>, <span $width</span>-<span $x</span>-1, 0, <span $x</span>, 0, 1, <span $height</span><span ); </span><span 14</span> <span } </span><span 15</span> imagejpeg(<span $new</span>, <span $newfile</span><span ); </span><span 16</span> imagedestroy(<span $back</span><span ); </span><span 17</span> imagedestroy(<span $new</span><span ); </span><span 18</span> <span } </span><span 19</span> <span function</span> turn_x(<span $background</span>, <span $newfile</span><span ){ </span><span 20</span> <span $back</span>=imagecreatefromjpeg(<span $background</span><span ); </span><span 21</span> <span $width</span>=imagesx(<span $back</span><span ); </span><span 22</span> <span $height</span>=imagesy(<span $back</span><span ); </span><span 23</span> <span $new</span>=imagecreatetruecolor(<span $width</span>, <span $height</span><span ); </span><span 24</span> <span for</span>(<span $y</span>=0; <span $y</span> < <span $height</span>; <span $y</span>++<span ){ </span><span 25</span> imagecopy(<span $new</span>, <span $back</span>,0, <span $height</span>-<span $y</span>-1, 0, <span $y</span>, <span $width</span>, 1<span ); </span><span 26</span> <span } </span><span 27</span> imagejpeg(<span $new</span>, <span $newfile</span><span ); </span><span 28</span> imagedestroy(<span $back</span><span ); </span><span 29</span> imagedestroy(<span $new</span><span ); </span><span 30</span> <span } </span><span 31</span> turn_y("./images/hee.jpg", "./images/hee11.jpg"<span ); </span><span 32</span> turn_x("./images/hee.jpg", "./images/hee12.jpg"<span ); </span><span 33</span> ?>

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1
好用且免費的程式碼編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器