程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP操作Imagick庫打印數字矩陣

PHP操作Imagick庫打印數字矩陣

編輯:關於PHP編程

PHP操作Imagick庫可以實現不少圖片效果,比如在一張圖片上,打印8*10的數字矩陣。以上效果的實現方法如下:

PHP操作Imagick庫代碼

  1. //格子的尺寸  
  2. $grid_font_size = 18;           //字體大小  
  3. $grid_font_color = "#000";      //字體顏色  
  4. $grid_width = 36;               //格子的寬度  
  5. $grid_height = 24;              //格子的高度  
  6. $grid_origin_x = 15;           //左上角的數字的起始橫坐標  
  7. $grid_origin_y = 98;            //左上角的數字的起始縱坐標  
  8.  
  9.  #原圖  
  10.  $image = new Imagick('background.jpg');  
  11.    
  12.  #寫入密保卡數據  
  13.  $tmp_grid_origin_x = $grid_origin_x;  
  14.  $tmp_grid_origin_y = $grid_origin_y;  
  15.  foreach ($pData as $k => $v){  
  16.    foreach ($v as $k_grid_data => $v_grid_data){  
  17.      $tmp_grid_origin_x += $grid_width;  
  18.      $draw = new ImagickDraw();  
  19.      $draw->setFillColor($grid_font_color);  
  20.      $draw->setFontSize($grid_font_size);  
  21.      $draw->annotation($tmp_grid_origin_x$tmp_grid_origin_y$v_grid_data);  
  22.      $image->drawImage($draw);  
  23.    }  
  24.    $tmp_grid_origin_x = $grid_origin_x;  
  25.    $tmp_grid_origin_y += $grid_height;  
  26.  }  
  27.  $image->writeImage($ks_ImageSrcPath$pSN'.jpg');  
  28.  
  29.  #釋放資源  
  30.  $image->destroy();  
  31.  $draw->destroy();  
  32.  

這樣做的後果是,在每次循環的時候,都要實例化一個ImagickDraw,並執行drawImage方法,非常占用CPU資源。

可以從以下兩點優化:

1. 不必每次都執行new操作,一個就夠了;

2. 不必每次都執行drawImage方法,一次就夠了。也就是說,annotation方法好像具有“附加”的意味,不用擔心後來的覆蓋掉之前的;

PHP操作Imagick庫優化後代碼如下:

  1. $draw = new ImagickDraw();  
  2. $draw->setFillColor($grid_font_color);  
  3. $draw->setFontSize($grid_font_size);  
  4. foreach ($pData as $k => $v){  
  5.   foreach ($v as $k_grid_data => $v_grid_data){  
  6.     $tmp_grid_origin_x += $grid_width;  
  7.     $draw->annotation($tmp_grid_origin_x$tmp_grid_origin_y$v_grid_data);  
  8.   }  
  9.    $tmp_grid_origin_x = $grid_origin_x;  
  10.    $tmp_grid_origin_y += $grid_height;  
  11. }  
  12. $image->drawImage($draw);  


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved