PHP實例——PHP創建動態圖像

2021-01-11 站長之家
首頁

 > 

語言

 > 

關鍵詞

 > 

php最新資訊

 > 

正文
PHP實例——PHP創建動態圖像

只要安裝一些第三方的庫文件並具有一定的幾何知識,就可以利用PHP來創建和處理圖像了。利用PHP創建動態圖像是相當容易的一件事情。下面,筆者將詳細介紹如何實現。  

  在使用基本的圖像創建函數之前,需要安裝GD庫文件。如果要使用與JPEG有關的圖像創建函數,還需要安裝jpeg-6b,如果要在圖像中使用Type 1型字體,則必須安裝t1lib。   

  在建立圖像創建環境之前,還需要做一些準備工作。首先,安裝t1lib接著安裝jpeg-6b,然後再安裝GD庫文件。在安裝時一定要按這裡給定的順序進行安裝,因為在編譯GD入庫時會用到jpeg-6b,如果沒有安裝jpeg-6b,在編譯時就會出錯。  

  在安裝完這三個組件後,還需要重新配置一次PHP,這也是你對採用DSO方式安裝PHP感到慶幸的地方之一。運行make clean,然後在當前的配置中添加下面的內容:   

  --with-gd=[/path/to/gd]

  --with-jpeg-dir=[/path/to/jpeg-6b]

  --with-t1lib=[/path/to/t1lib]   

  完成添加後執行make命令,然後再執行make install命令,重新啟動Apache後運行phpinfo()來檢查一下新的設置是否生效了。現在,我們就可以開始圖像創建工作了。   

  根據所安裝的GD庫文件的版本將決定你是否能創建GIF或PNG格式的圖形文件。如果安裝的是gd-1.6或以前的版本,可以使用GIF格式的文件但不能創建PNG格式,如果安裝的是gd-1.6以後的版本,可以創建PNG文件但不能創建GIF格式的文件。   

  創建一幅簡單的圖像也需要用到許多的函數,我們將一步一步地進行說明。  

  在下面的例子中,我們將創建一個PNG格式的圖像文件,下面的代碼是一個包含所創建的圖像的MIME類型的頭部:  

  <? header ("Content-type: image/png");  

  使用ImageCreate()創建一個代表空白圖像的變量,這個函數要求以像素為單位的圖像大小的參數,其格式是ImageCreate(x_size, y_size)。如果要創建一個大小為250×250的圖像,就可以使用下面的語句:   

  $newImg = ImageCreate(250,250);   

  由於圖像還是空白的,因此你可能會希望用一些彩色來填充它。你需要首先使用ImageColorAllocate()函數用其RGB值為這種顏色指定一個名字,這一函數的格式為ImageColorAllocate([image], [red], [green], [blue])。如果要定義天藍色,可以使用如下的語句:  

  $skyblue = ImageColorAllocate($newImg,136,193,255);   

  接下來,需要使用ImageFill()函數用這種顏色填充這個圖像,ImageFill()函數有幾個版本,例如ImageFillRectangle()、ImageFillPolygon()等。為簡單起見,我們通過如下的格式使用ImageFill()函數:  

  ImageFill([image], [start x point], [start y point], [color])

  ImageFill($newImg,0,0,$skyblue);   

  最後,在圖像建立後釋放圖像句柄和所佔用的內存:  

  ImagePNG($newImg);

  ImageDestroy($newImg); ?>

  這樣,創建圖像的全部代碼如下所示:

      php代碼:

  <? header ("Content-type: image/png");

  $newImg = ImageCreate(250,250);

  $skyblue = ImageColorAllocate($newImg,136,193,255);

  ImageFill($newImg,0,0,$skyblue);

  ImagePNG($newImg);

  ImageDestroy($newImg);

  ?>    

如果把這個腳本文件保存為skyblue.php,並用瀏覽器訪問它,我們會看到一個天藍色的250×250的PNG格式的圖像。   

  我們還可以使用圖像創建函數對圖像進行處理,例如把一個較大圖像作成一個小圖像:   

  假設你有一幅圖像,想從中裁剪出一個35×35大小的圖像。你所需要作的是創建一個35×35大小的空白圖像,創建一個包含原來圖像的圖像流,然後把一個經過調整大小的原來的圖像放到新的空白圖像中。   

  要完成這一任務的關鍵函數是ImageCopyResized(),它要求的格式如下所示:   

  ImageCopyResized([new image handle],[original image handle],[new image X], [new Image Y], [original image X], [original image Y], [new image X], [new image Y], [original image X], [original image Y])。

        php代碼:

       <? /* 發送一個頭部,以便讓瀏覽器知道該文件所包含的內容類型*/

  header("Content-type: image/png");

  /* 建立保存新圖像高度和寬度的變量*/

  $newWidth = 35;

  $newHeight = 35;

  /* 建立給定高度和寬度的新的空白圖像*/

  $newImg = ImageCreate($newWidth,$newHeight);

  /* 從原來較大的圖像中得到數據*/

  $origImg = ImageCreateFromPNG("test.png");

  /*拷貝調整大小後的圖像,使用ImageSX()、ImageSY()得到原來的圖像在X、Y方面上的大小 */

  ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));

  /*創建希望得到的圖像,釋放內存 */

  ImagePNG($newImg);

  ImageDestroy($newImg); ?>

如果把這一小段腳本保存為resized.php,然後用瀏覽器對它進行訪問,就會看到一個35×35大小的PNG格式的圖像。 

相關焦點

  • 實例,PHP計算一個圓的面積
    實例說明常量是PHP編程基礎的重要組成部分,其作用是定義一個不會改變的值。本例通過計算圓的面積說明常量是如何定義和使用的,運行結果如下圖所示。實現過程創建腳本 index.php 文件,首先,通過 drfine()函數定義常量。
  • php基礎大通關——十分鐘了解php基礎知識點之二
    本節我們繼續通過練習題的方式來熟悉php的基礎知識點。1. echo 和 print 有什麼區別?php常用函數3. Joomla 在 PHP 中是什麼? 一套功能豐富的庫 開源 CMS 設計動態頁面的框架 可重用 PHP 組件的框架和分發系統解析:Joomla!
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。
  • PHP圖片處理庫Grafika詳細教程(1):圖像基本處理
    我們在grafika目錄下建立一個index.php,之後的操作都在這裡。 grafika給我們提供了一個非常好用的autoloader.php位於src目錄下。 在index.php中引入它,(說明下,以下示例都需要引入這個autoloader.php文件,我們默認省略),下面就可以直接開發了。
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    然後,我在 GitHub 上找到了 php-opencv 庫,它是一個用於調用 OpenCV 方法的 PHP 7 模塊。我花了幾個晚上來編譯、安裝和運行示例。我開始嘗試這個模塊的不同功能,但這個庫還缺少一些方法,因此我就自己添加了它們並創建了一個 pull request,且該庫的作者接受了它們。之後,我添加了更多的功能。
  • Php常見問題總結
    > 然後在php.ini中設置:include_path = "c:/php",並將debug.php放在此文件夾,以後就可以在每個網頁裡包含此文件,查看得到的變量名和值.php$Var="hello php";//修改為$Var="     hello php";試試得到什麼結果$post= "receive.php?Name=".$Var;header("location:$post");?
  • php知識大通關——常見函數功能
    接上節內容,仍然以習題的方式講解php常見函數及功能!php常見函數1、在php中,下面哪個方法使用 PHP 連接 MySQL 資料庫? 變量名可以以字母或下劃線開頭 變量名可以由數字、字母和下劃線組成 不能使用+、-、%、(、)等字符作為變量名 以上選項都是正確的解析:php變量命名規則為:不能以數字以及『-』開頭,可以以字母或下劃線開頭、變量名可以由數字、字母和下劃線組成、不能使用+、-、%、(、)等字符作為變量名(因為這些特殊字符在php中有著自己獨特的含義)5、下列哪個數組表示帶數字索引的數組?
  • php中函數禁用繞過的原理與利用
    /etc/passwd", "exploit"); unlink("tmplink"); mkdir("tmplink");首先是創建一個link,將tmplink用相對路徑指向abc/abc/abc/abc,然後再創建一個link,將exploit指向tmplink/../../../..
  • 關於PHP 5.4 你所需要知道的
    新特性與改動 此次更新的關鍵新特性,包括:新增traits,更精簡的Array數組語法,供測試使用的內建webserver,可以閉包使用的$this指針,實例化類成員訪問,<?=標記永遠生效 等等……PHP 5.4.0 性能大幅提升, 修復超過100個bug. 廢除了register_globals, magic_quotes以及安全模式。
  • php 中關於時區的那點事
    所以最好還是修改一下時區的設置項,如果業務不考慮國際化需求,那麼永久性把時區固定就可以了,如果有國際化的業務場景,那麼最好能夠動態設置時區,這樣就能清楚知道當地時間了.因此,下面主要提供兩種方式來設置時區,分別是靜態設置和動態設置,其中動態設置又提供了兩種方法.
  • 實例-使用PHP類庫PHPqrCode生成二維碼
    下載官網提供的類庫後,只需要使用 phpqrcode.php 就可以生成二維碼了,你使用的PHP環境必須開啟支持GD2。一、phpqrcode直接輸出二維碼:【例1】調用PHPqrCode非常簡單,如下代碼即可生成一張內容為 百度首頁的二維碼。代碼如下:
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    polarphp 項目介紹polarphp是一個全新的PHP語言的運行時環境,基於目前最新的zend virtual machine進行打造,支持最新的語言規範,同時提供了自己的運行時標準庫 (libpdk)。
  • windows 檢查php版本專題及常見問題 - CSDN
    2.(C盤沒有對應的目錄需要手動創建)3. 檢查openssl和soap模塊是否安裝成功,在瀏覽器地址欄中輸入http://localhost:81/phpinfo.php。查看openssl和soap模塊是否存在。
  • PHP實現最簡單的聊天室應用
    程序在伺服器中執行chat_send_ajax.php以及用戶名和聊天文本。它執行chat_recv_ajax.php程序以獲得來自於資料庫表的聊天信息。在 onreadystatechange屬性中,另一個JavaScript 函數get_chat_msg_result被連接起來。在返回來自於資料庫表中的聊天消息的同時,程序控制進入到 get_chat_msg_result函數。
  • DVBBS php轉換工具使用教程
    數據表前綴$My_Host = "localhost";               // Dvbbs.php 資料庫伺服器$My_User = "root";                    // Dvbbs.php 資料庫登錄會員$My_Password = "123456";              // Dvbbs.php 資料庫登錄密碼
  • PHP 框架 QueryPHP 1.0.3 發布,兼容 PHP 8.0 和 PHP 8.1
    路由系統 (框架提供 MVC 自動路由並能夠智能解析 Restful 請求和基於 OpenApi 3.0 規範的 swagger-php 註解路由,文檔路由一步搞定。)composer create-project hunzhiwange/queryphp myappphp leevel server &
  • TP6多應用模式下獲取不到當前控制器和方法名 - php中文網
    開發環境windwos 10PHP 7.3TP 6.0.2問題重現1、先創建一個新項目>composer create-project topthink/think tp60cd tp60/composer require topthink/think-multi-app2、修改 /config/app.php 加入下面兩行
  • PHP文件包含漏洞利用思路與Bypass總結手冊(二)
    session的文件名格式為sess_[phpsessid]。而phpsessid在發送的請求的cookie欄位中可以看到。會話處理在了解了用戶會話的存儲下來就需要了解php是如何處理用戶的會話信息。php中針對用戶會話的處理方式主要取決於伺服器在php.ini或代碼中對session.serialize_handler的配置。
  • php基礎打通關之一,你能通關嗎?
    本節將通過試題的方式來講解php的基礎問題,有興趣的來看看自己的php基礎如何!php基礎知識結構PHP 是下列哪個選項的簡稱?A. Preprocessed Hypertext PageB. Hypertext Markup LanguageC.
  • php常量是什麼?它和變量有什麼區別?
    為了能讓更多的人學好php,小編結合自己的理解和自學時所做的筆記,整合了一些知識點,並藉助百家號這個大平臺分享給大家,希望對大家有所幫助!今天小編將分享的是php常量,以及它和變量的區別。二、php常量1、什麼是php常量?所謂常量就是不能改變的量,php常量一旦被定義,就不能被改變或取消定義。這是官方的解釋,也是最權威的解釋。