當前位置: 首頁>>代碼示例>>PHP>>正文


PHP resource::queryFontMetrics方法代碼示例

本文整理匯總了PHP中resource::queryFontMetrics方法的典型用法代碼示例。如果您正苦於以下問題:PHP resource::queryFontMetrics方法的具體用法?PHP resource::queryFontMetrics怎麽用?PHP resource::queryFontMetrics使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在resource的用法示例。


在下文中一共展示了resource::queryFontMetrics方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: text

 /**
  * 圖像添加文字
  * @param  string  $text   添加的文字
  * @param  string  $font   字體路徑
  * @param  integer $size   字號
  * @param  string  $color  文字顏色
  * @param  integer $locate 文字寫入位置
  * @param  integer $offset 文字相對當前位置的偏移量
  * @param  integer $angle  文字傾斜角度
  */
 public function text($text, $font, $size, $color = '#00000000', $locate = Image::IMAGE_WATER_SOUTHEAST, $offset = 0, $angle = 0)
 {
     //資源檢測
     if (empty($this->img)) {
         throw new Exception('沒有可以被寫入文字的圖像資源');
     }
     if (!is_file($font)) {
         throw new Exception("不存在的字體文件:{$font}");
     }
     //獲取顏色和透明度
     if (is_array($color)) {
         $color = array_map('dechex', $color);
         foreach ($color as &$value) {
             $value = str_pad($value, 2, '0', STR_PAD_LEFT);
         }
         $color = '#' . implode('', $color);
     } elseif (!is_string($color) || 0 !== strpos($color, '#')) {
         throw new Exception('錯誤的顏色值');
     }
     $col = substr($color, 0, 7);
     $alp = strlen($color) == 9 ? substr($color, -2) : 0;
     //獲取文字信息
     $draw = new ImagickDraw();
     $draw->setFont(realpath($font));
     $draw->setFontSize($size);
     $draw->setFillColor($col);
     $draw->setFillAlpha(1 - hexdec($alp) / 127);
     $draw->setTextAntialias(true);
     $draw->setStrokeAntialias(true);
     $metrics = $this->img->queryFontMetrics($draw, $text);
     /* 計算文字初始坐標和尺寸 */
     $x = 0;
     $y = $metrics['ascender'];
     $w = $metrics['textWidth'];
     $h = $metrics['textHeight'];
     /* 設定文字位置 */
     switch ($locate) {
         /* 右下角文字 */
         case Image::IMAGE_WATER_SOUTHEAST:
             $x += $this->info['width'] - $w;
             $y += $this->info['height'] - $h;
             break;
             /* 左下角文字 */
         /* 左下角文字 */
         case Image::IMAGE_WATER_SOUTHWEST:
             $y += $this->info['height'] - $h;
             break;
             /* 左上角文字 */
         /* 左上角文字 */
         case Image::IMAGE_WATER_NORTHWEST:
             // 起始坐標即為左上角坐標,無需調整
             break;
             /* 右上角文字 */
         /* 右上角文字 */
         case Image::IMAGE_WATER_NORTHEAST:
             $x += $this->info['width'] - $w;
             break;
             /* 居中文字 */
         /* 居中文字 */
         case Image::IMAGE_WATER_CENTER:
             $x += ($this->info['width'] - $w) / 2;
             $y += ($this->info['height'] - $h) / 2;
             break;
             /* 下居中文字 */
         /* 下居中文字 */
         case Image::IMAGE_WATER_SOUTH:
             $x += ($this->info['width'] - $w) / 2;
             $y += $this->info['height'] - $h;
             break;
             /* 右居中文字 */
         /* 右居中文字 */
         case Image::IMAGE_WATER_EAST:
             $x += $this->info['width'] - $w;
             $y += ($this->info['height'] - $h) / 2;
             break;
             /* 上居中文字 */
         /* 上居中文字 */
         case Image::IMAGE_WATER_NORTH:
             $x += ($this->info['width'] - $w) / 2;
             break;
             /* 左居中文字 */
         /* 左居中文字 */
         case Image::IMAGE_WATER_WEST:
             $y += ($this->info['height'] - $h) / 2;
             break;
         default:
             /* 自定義文字坐標 */
             if (is_array($locate)) {
                 list($posx, $posy) = $locate;
                 $x += $posx;
//.........這裏部分代碼省略.........
開發者ID:a3147972,項目名稱:wswl,代碼行數:101,代碼來源:Imagick.class.php

示例2: imagickDrawText

 /**
  * 在圖片上添加驗證文字
  * @param  resource $image         圖片對象
  * @param  string   $text          要添加的字符
  * @return resource 圖片對象
  */
 protected function imagickDrawText($image, $text)
 {
     $draw = new \ImagickDraw();
     $draw->setFont($this->font);
     $draw->setFontSize($this->height * 0.8);
     $draw->setFillColor(new \ImagickPixel('#333333'));
     $draw->setStrokeAntialias(true);
     $draw->setTextAntialias(true);
     $metrics = $image->queryFontMetrics($draw, $text);
     $draw->annotation(0, $metrics['ascender'], $text);
     $image->drawImage($draw);
     $draw->destroy();
     return $image;
 }
開發者ID:feixingbeibao,項目名稱:vitexframework,代碼行數:20,代碼來源:Captcha.php

示例3: getTextGeometry

 /**
  * {@inheritdoc}
  */
 public function getTextGeometry($text, Drawer $drawer)
 {
     $metrics = $this->resource->queryFontMetrics($this->getImagickDraw($drawer), $text);
     return array('width' => $metrics['textWidth'], 'height' => $metrics['textHeight']);
 }
開發者ID:basekit,項目名稱:imanee,代碼行數:8,代碼來源:ImagickResource.php

示例4: imageAddText

 /**
  * Add watermark text to image
  *
  * @param resource $image
  * @param array $opt
  * @return resource
  */
 private function imageAddText($image, $color, $text)
 {
     if (osc_use_imagick()) {
         $draw = new ImagickDraw();
         $draw->setFillColor('black');
         //$color);
         $draw->setFont($this->font);
         $draw->setFontSize(30);
         $metrics = $image->queryFontMetrics($draw, $text);
         $geometry = $image->getImageGeometry();
         switch (osc_watermark_place()) {
             case 'tl':
                 $offset['x'] = 1;
                 $offset['y'] = $metrics['ascender'] + 1;
                 break;
             case 'tr':
                 $offset['x'] = $geometry['width'] - $metrics['textWidth'] - 1;
                 $offset['y'] = $metrics['ascender'] + 1;
                 break;
             case 'bl':
                 $offset['x'] = 1;
                 $offset['y'] = $geometry['height'] - 1;
                 break;
             case 'br':
                 $offset['x'] = $geometry['width'] - $metrics['textWidth'] - 1;
                 $offset['y'] = $geometry['height'] - 1;
                 break;
             default:
                 $offset['x'] = $geometry['width'] / 2 - $metrics['textWidth'] / 2;
                 $offset['y'] = $geometry['height'] / 2 - $metrics['ascender'] / 2;
                 break;
         }
         $image->annotateImage($draw, $offset['x'], $offset['y'], 0, $text);
         $image->setImageFormat('jpg');
     } else {
         // allocate text color
         $color = $this->imageColorAllocateHex($image, $color);
         // calculate watermark position and get full path to font file
         $offset = $this->calculateOffset($image, $text);
         // Add the text to image
         imagettftext($image, 20, 0, $offset['x'], $offset['y'], $color, $this->font, html_entity_decode($text, null, "UTF-8"));
     }
     return $image;
 }
開發者ID:nsswaga,項目名稱:OSClass,代碼行數:51,代碼來源:Watermark.php

示例5: text

 public function text($text, $font, $size, $color = "#00000000", $locate = THINKIMAGE_WATER_SOUTHEAST, $offset = 0, $angle = 0)
 {
     if (empty($this->img)) {
         throw new Exception("沒有可以被寫入文字的圖像資源");
     }
     if (!is_file($font)) {
         throw new Exception("不存在的字體文件:{$font}");
     }
     if (is_array($color)) {
         $color = array_map("dechex", $color);
         foreach ($color as &$value) {
             $value = str_pad($value, 2, "0", STR_PAD_LEFT);
         }
         $color = "#" . implode("", $color);
     } else {
         if (!is_string($color) || 0 !== strpos($color, "#")) {
             throw new Exception("錯誤的顏色值");
         }
     }
     $col = substr($color, 0, 7);
     $alp = strlen($color) == 9 ? substr($color, -2) : 0;
     $draw = new ImagickDraw();
     $draw->setFont(realpath($font));
     $draw->setFontSize($size);
     $draw->setFillColor($col);
     $draw->setFillAlpha(1 - hexdec($alp) / 127);
     $draw->setTextAntialias(true);
     $draw->setStrokeAntialias(true);
     $metrics = $this->img->queryFontMetrics($draw, $text);
     $x = 0;
     $y = $metrics["ascender"];
     $w = $metrics["textWidth"];
     $h = $metrics["textHeight"];
     switch ($locate) {
         case THINKIMAGE_WATER_SOUTHEAST:
             $x += $this->info["width"] - $w;
             $y += $this->info["height"] - $h;
             break;
         case THINKIMAGE_WATER_SOUTHWEST:
             $y += $this->info["height"] - $h;
             break;
         case THINKIMAGE_WATER_NORTHWEST:
             break;
         case THINKIMAGE_WATER_NORTHEAST:
             $x += $this->info["width"] - $w;
             break;
         case THINKIMAGE_WATER_CENTER:
             $x += ($this->info["width"] - $w) / 2;
             $y += ($this->info["height"] - $h) / 2;
             break;
         case THINKIMAGE_WATER_SOUTH:
             $x += ($this->info["width"] - $w) / 2;
             $y += $this->info["height"] - $h;
             break;
         case THINKIMAGE_WATER_EAST:
             $x += $this->info["width"] - $w;
             $y += ($this->info["height"] - $h) / 2;
             break;
         case THINKIMAGE_WATER_NORTH:
             $x += ($this->info["width"] - $w) / 2;
             break;
         case THINKIMAGE_WATER_WEST:
             $y += ($this->info["height"] - $h) / 2;
             break;
         default:
             if (is_array($locate)) {
                 $posy = $locate[1];
                 $posx = $locate[0];
                 $x += $posx;
                 $y += $posy;
             } else {
                 throw new Exception("不支持的文字位置類型");
             }
     }
     if (is_array($offset)) {
         $offset = array_map("intval", $offset);
         $oy = $offset[1];
         $ox = $offset[0];
     } else {
         $offset = intval($offset);
         $ox = $oy = $offset;
     }
     if ("gif" == $this->info["type"]) {
         $img = $this->img->coalesceImages();
         $this->img->destroy();
         do {
             $img->annotateImage($draw, $x + $ox, $y + $oy, $angle, $text);
         } while ($img->nextImage());
         $this->img = $img->deconstructImages();
         $img->destroy();
     } else {
         $this->img->annotateImage($draw, $x + $ox, $y + $oy, $angle, $text);
     }
     $draw->destroy();
 }
開發者ID:AxelPanda,項目名稱:ibos,代碼行數:95,代碼來源:ImageImagick.class.php


注:本文中的resource::queryFontMetrics方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。