本文整理匯總了PHP中resource::annotateImage方法的典型用法代碼示例。如果您正苦於以下問題:PHP resource::annotateImage方法的具體用法?PHP resource::annotateImage怎麽用?PHP resource::annotateImage使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類resource
的用法示例。
在下文中一共展示了resource::annotateImage方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: text
//.........這裏部分代碼省略.........
$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;
$y += $posy;
} else {
throw new Exception('不支持的文字位置類型');
}
}
/* 設置偏移量 */
if (is_array($offset)) {
$offset = array_map('intval', $offset);
list($ox, $oy) = $offset;
} 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();
}
示例2: annotate
/**
* {@inheritdoc}
*/
public function annotate($text, $coordX, $coordY, $angle, Drawer $drawer)
{
return $this->resource->annotateImage($this->getImagickDraw($drawer), $coordX, $coordY, $angle, $text);
}
示例3: 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;
}
示例4: 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();
}