本文整理匯總了PHP中phpthumb_functions::ImageHexColorAllocate方法的典型用法代碼示例。如果您正苦於以下問題:PHP phpthumb_functions::ImageHexColorAllocate方法的具體用法?PHP phpthumb_functions::ImageHexColorAllocate怎麽用?PHP phpthumb_functions::ImageHexColorAllocate使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類phpthumb_functions
的用法示例。
在下文中一共展示了phpthumb_functions::ImageHexColorAllocate方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: WatermarkText
public function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color = '000000', $ttffont = '', $opacity = 100, $margin = 5, $angle = 0, $bg_color = false, $bg_opacity = 0, $fillextend = '')
{
// text watermark requested
if (!$text) {
return false;
}
ImageAlphaBlending($gdimg, true);
if (preg_match('#^([0-9\\.\\-]*)x([0-9\\.\\-]*)(@[LCR])?$#i', $alignment, $matches)) {
$originOffsetX = intval($matches[1]);
$originOffsetY = intval($matches[2]);
$alignment = @$matches[4] ? $matches[4] : 'L';
$margin = 0;
} else {
$originOffsetX = 0;
$originOffsetY = 0;
}
$metaTextArray = array('^Fb' => $this->phpThumbObject->getimagesizeinfo['filesize'], '^Fk' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1024), '^Fm' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1048576), '^X' => $this->phpThumbObject->getimagesizeinfo[0], '^Y' => $this->phpThumbObject->getimagesizeinfo[1], '^x' => ImageSX($gdimg), '^y' => ImageSY($gdimg), '^^' => '^');
$text = strtr($text, $metaTextArray);
$text = str_replace("\r\n", "\n", $text);
$text = str_replace("\r", "\n", $text);
$textlines = explode("\n", $text);
$this->DebugMessage('Processing ' . count($textlines) . ' lines of text', __FILE__, __LINE__);
if (@is_readable($ttffont) && is_file($ttffont)) {
$opacity = 100 - intval(max(min($opacity, 100), 0));
$letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, false, $opacity * 1.27);
$this->DebugMessage('Using TTF font "' . $ttffont . '"', __FILE__, __LINE__);
$TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
$min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
$max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
//$text_width = round($max_x - $min_x + ($size * 0.5));
$text_width = round($max_x - $min_x);
$min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
$max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
//$text_height = round($max_y - $min_y + ($size * 0.5));
$text_height = round($max_y - $min_y);
$TTFboxChar = ImageTTFbBox($size, $angle, $ttffont, 'jH');
$char_min_y = min($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_max_y = max($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_height = round($char_max_y - $char_min_y);
if ($alignment == '*') {
$text_origin_y = $char_height + $margin;
while ($text_origin_y - $text_height < ImageSY($gdimg)) {
$text_origin_x = $margin;
while ($text_origin_x < ImageSX($gdimg)) {
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
$text_origin_x += $text_width + $margin;
}
$text_origin_y += $text_height + $margin;
}
} else {
// this block for background color only
switch ($alignment) {
case '*':
// handled separately
break;
case 'T':
$text_origin_x = $originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = $char_height + $margin + $originOffsetY;
break;
case 'B':
$text_origin_x = $originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
break;
case 'L':
$text_origin_x = $margin + $originOffsetX;
$text_origin_y = $originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'R':
$text_origin_x = $originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = $originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'C':
$text_origin_x = $originOffsetX ? $originOffsetX - round($text_width / 2) : round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = $originOffsetY ? $originOffsetY : round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'TL':
$text_origin_x = $margin + $originOffsetX;
$text_origin_y = $char_height + $margin + $originOffsetY;
break;
case 'TR':
$text_origin_x = $originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = $char_height + $margin + $originOffsetY;
break;
case 'BL':
$text_origin_x = $margin + $originOffsetX;
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
break;
case 'BR':
default:
$text_origin_x = $originOffsetX ? $originOffsetX - $text_width : ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin + $originOffsetY;
break;
}
//ImageRectangle($gdimg, $text_origin_x + $min_x, $text_origin_y + $TTFbox[1], $text_origin_x + $min_x + $text_width, $text_origin_y + $TTFbox[1] - $text_height, $letter_color_text);
if (phpthumb_functions::IsHexColor($bg_color)) {
$text_background_alpha = round(127 * ((100 - min(max(0, $bg_opacity), 100)) / 100));
$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, $bg_color, false, $text_background_alpha);
} else {
$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, 'FFFFFF', false, 127);
}
//.........這裏部分代碼省略.........
示例2: explode
if ($phpThumb->w <= 0 || $phpThumb->h <= 0) {
$phpThumb->ErrorImage('"w" and "h" parameters required for "new"');
}
@(list($bghexcolor, $opacity) = explode('|', $_GET['new']));
if (!phpthumb_functions::IsHexColor($bghexcolor)) {
$phpThumb->ErrorImage('BGcolor parameter for "new" is not valid');
}
$opacity = strlen($opacity) ? $opacity : 100;
if ($phpThumb->gdimg_source = phpthumb_functions::ImageCreateFunction($phpThumb->w, $phpThumb->h)) {
$alpha = (100 - min(100, max(0, $opacity))) * 1.27;
if ($alpha) {
$phpThumb->setParameter('is_alpha', true);
ImageAlphaBlending($phpThumb->gdimg_source, false);
ImageSaveAlpha($phpThumb->gdimg_source, true);
}
$new_background_color = phpthumb_functions::ImageHexColorAllocate($phpThumb->gdimg_source, $bghexcolor, false, $alpha);
ImageFilledRectangle($phpThumb->gdimg_source, 0, 0, $phpThumb->w, $phpThumb->h, $new_background_color);
} else {
$phpThumb->ErrorImage('failed to create "new" image (' . $phpThumb->w . 'x' . $phpThumb->h . ')');
}
} elseif (!$phpThumb->src) {
$phpThumb->ErrorImage('Usage: ' . $_SERVER['PHP_SELF'] . '?src=/path/and/filename.jpg' . "\n" . 'read Usage comments for details');
} elseif (preg_match('/^(f|ht)tp\\:\\/\\//i', $phpThumb->src)) {
$phpThumb->DebugMessage('$phpThumb->src (' . $phpThumb->src . ') is remote image, attempting to download', __FILE__, __LINE__);
if ($phpThumb->config_http_user_agent) {
$phpThumb->DebugMessage('Setting "user_agent" to "' . $phpThumb->config_http_user_agent . '"', __FILE__, __LINE__);
ini_set('user_agent', $phpThumb->config_http_user_agent);
}
$cleanedupurl = phpthumb_functions::CleanUpURLencoding($phpThumb->src);
$phpThumb->DebugMessage('CleanUpURLencoding(' . $phpThumb->src . ') returned "' . $cleanedupurl . '"', __FILE__, __LINE__);
$phpThumb->src = $cleanedupurl;
示例3: ErrorImage
function ErrorImage($text, $width = 0, $height = 0, $forcedisplay = false)
{
$width = $width ? $width : $this->config_error_image_width;
$height = $height ? $height : $this->config_error_image_height;
$text = 'phpThumb() v' . $this->phpthumb_version . "\n" . 'http://phpthumb.sourceforge.net' . "\n\n" . ($this->config_disable_debug ? 'Error messages disabled' : $text);
$this->FatalError($text);
$this->DebugMessage($text, __FILE__, __LINE__);
$this->purgeTempFiles();
if ($this->phpThumbDebug && !$forcedisplay) {
return false;
}
if (!$this->config_error_die_on_error && !$forcedisplay) {
return false;
}
if ($this->config_error_silent_die_on_error) {
exit;
}
if ($this->err || $this->config_error_message_image_default) {
// Show generic custom error image instead of error message
// for use on production sites where you don't want debug messages
if ($this->err == 'showerror' || $this->phpThumbDebug) {
// fall through and actually show error message even if default error image is set
} else {
header('Location: ' . ($this->err ? $this->err : $this->config_error_message_image_default));
exit;
}
}
$this->setOutputFormat();
if (!$this->thumbnailFormat || phpthumb_functions::gd_version() < 1) {
$this->thumbnailFormat = 'text';
}
if (@$this->thumbnailFormat == 'text') {
// bypass all GD functions and output text error message
if (!headers_sent()) {
header('Content-type: text/plain');
echo $text;
} else {
echo '<pre>' . htmlspecialchars($text) . '</pre>';
}
exit;
}
$FontWidth = ImageFontWidth($this->config_error_fontsize);
$FontHeight = ImageFontHeight($this->config_error_fontsize);
$LinesOfText = explode("\n", @wordwrap($text, floor($width / $FontWidth), "\n", true));
$height = max($height, count($LinesOfText) * $FontHeight);
$headers_file = '';
$headers_line = '';
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=') && headers_sent($headers_file, $headers_line)) {
echo "\n" . '**Headers already sent in file "' . $headers_file . '" on line "' . $headers_line . '", dumping error message as text:**<br><pre>' . "\n\n" . $text . "\n" . '</pre>';
} elseif (headers_sent()) {
echo "\n" . '**Headers already sent, dumping error message as text:**<br><pre>' . "\n\n" . $text . "\n" . '</pre>';
} elseif ($gdimg_error = ImageCreate($width, $height)) {
$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_bgcolor, true);
$text_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_textcolor, true);
ImageFilledRectangle($gdimg_error, 0, 0, $width, $height, $background_color);
$lineYoffset = 0;
foreach ($LinesOfText as $line) {
ImageString($gdimg_error, $this->config_error_fontsize, 2, $lineYoffset, $line, $text_color);
$lineYoffset += $FontHeight;
}
if (function_exists('ImageTypes')) {
$imagetypes = ImageTypes();
if ($imagetypes & IMG_PNG) {
header('Content-Type: image/png');
ImagePNG($gdimg_error);
} elseif ($imagetypes & IMG_GIF) {
header('Content-Type: image/gif');
ImageGIF($gdimg_error);
} elseif ($imagetypes & IMG_JPG) {
header('Content-Type: image/jpeg');
ImageJPEG($gdimg_error);
} elseif ($imagetypes & IMG_WBMP) {
header('Content-Type: image/vnd.wap.wbmp');
ImageWBMP($gdimg_error);
}
}
ImageDestroy($gdimg_error);
}
if (!headers_sent()) {
echo "\n" . '**Failed to send graphical error image, dumping error message as text:**<br>' . "\n\n" . $text;
}
exit;
return true;
}
示例4: ErrorImage
function ErrorImage($text, $width = 400, $height = 100)
{
$this->error = $text;
if (!$this->config_error_die_on_error) {
return true;
}
if (!empty($this->err) || !empty($this->config_error_message_image_default)) {
// Show generic custom error image instead of error message
// for use on production sites where you don't want debug messages
if (@$this->err == 'showerror') {
// fall through and actually show error message even if default error image is set
} else {
header('Location: ' . (!empty($this->err) ? $this->err : $this->config_error_message_image_default));
exit;
}
}
if (@$this->f == 'text') {
// bypass all GD functions and output text error message
die('<PRE>' . $text . '</PRE>');
}
$FontWidth = ImageFontWidth($this->config_error_fontsize);
$FontHeight = ImageFontHeight($this->config_error_fontsize);
$LinesOfText = explode("\n", wordwrap($text, floor($width / $FontWidth), "\n", true));
$height = max($height, count($LinesOfText) * $FontHeight);
if (headers_sent()) {
echo "\n" . '**Headers already sent, dumping error message as text:**<br>' . "\n\n" . $text;
} elseif ($gdimg_error = @ImageCreate($width, $height)) {
$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_bgcolor, true);
$text_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_textcolor, true);
ImageFilledRectangle($gdimg_error, 0, 0, $width, $height, $background_color);
$lineYoffset = 0;
foreach ($LinesOfText as $line) {
ImageString($gdimg_error, $this->config_error_fontsize, 2, $lineYoffset, $line, $text_color);
$lineYoffset += $FontHeight;
}
if (function_exists('ImageTypes')) {
$imagetypes = ImageTypes();
if ($imagetypes & IMG_PNG) {
header('Content-type: image/png');
ImagePNG($gdimg_error);
} elseif ($imagetypes & IMG_GIF) {
header('Content-type: image/gif');
ImageGIF($gdimg_error);
} elseif ($imagetypes & IMG_JPG) {
header('Content-type: image/jpeg');
ImageJPEG($gdimg_error);
} elseif ($imagetypes & IMG_WBMP) {
header('Content-type: image/wbmp');
ImageWBMP($gdimg_error);
}
}
ImageDestroy($gdimg_error);
}
if (!headers_sent()) {
echo "\n" . '**Failed to send graphical error image, dumping error message as text:**<br>' . "\n\n" . $text;
}
exit;
return true;
}
示例5: WatermarkText
function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color = '000000', $ttffont = '', $opacity = 100, $margin = 5, $angle = 0)
{
// text watermark requested
if (!$text) {
return false;
}
ImageAlphaBlending($gdimg, true);
$text = str_replace("\r\n", "\n", $text);
$text = str_replace("\r", "\n", $text);
$textlines = explode("\n", $text);
if (@is_readable($ttffont) && is_file($ttffont)) {
$opacity = 100 - intval(max(min($opacity, 100), 0));
$this->DebugMessage('Using TTF font "' . $ttffont . '"', __FILE__, __LINE__);
$TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
$min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
$max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
//$text_width = round($max_x - $min_x + ($size * 0.5));
$text_width = round($max_x - $min_x);
$min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
$max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
//$text_height = round($max_y - $min_y + ($size * 0.5));
$text_height = round($max_y - $min_y);
$TTFboxChar = ImageTTFbBox($size, $angle, $ttffont, 'pH');
$char_min_y = min($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_max_y = max($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_height = round($char_max_y - $char_min_y);
switch ($alignment) {
case 'T':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = $char_height + $margin;
break;
case 'B':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
break;
case 'L':
$text_origin_x = $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'R':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'C':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'TL':
$text_origin_x = $margin;
$text_origin_y = $char_height + $margin;
break;
case 'TR':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = $char_height + $margin;
break;
case 'BL':
$text_origin_x = $margin;
$text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
break;
case 'BR':
default:
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
break;
}
$letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, false, $opacity * 1.27);
if ($alignment == '*') {
$text_origin_y = $char_height + $margin;
while ($text_origin_y - $text_height < ImageSY($gdimg)) {
$text_origin_x = $margin;
while ($text_origin_x < ImageSX($gdimg)) {
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
$text_origin_x += $text_width + $margin;
}
$text_origin_y += $text_height + $margin;
}
} else {
//ImageRectangle($gdimg, $text_origin_x + $min_x, $text_origin_y + $TTFbox[1], $text_origin_x + $min_x + $text_width, $text_origin_y + $TTFbox[1] - $text_height, $letter_color_text);
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
}
return true;
//if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
// if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
// $letter_color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark, 127, 127, 127, 127);
// $letter_color_background_mask = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark_mask, 127, 127, 127, 127);
// ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $letter_color_background);
// ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $letter_color_background_mask);
//
// $letter_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
// $letter_color_watermark_mask = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
//
// ImageTTFtext($img_watermark, $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y, $letter_color_watermark, $ttffont, $text);
// ImageTTFtext($img_watermark_mask, $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y, -$letter_color_watermark_mask, $ttffont, $text);
//
// $this->ApplyMask($img_watermark_mask, $img_watermark);
// $this->WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
//
// ImageDestroy($img_watermark);
// ImageDestroy($img_watermark_mask);
// return true;
//.........這裏部分代碼省略.........
示例6: WatermarkText
function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color = '000000', $ttffont = '', $opacity = 100, $margin = 5, $angle = 0, $bg_color = false, $bg_opacity = 0, $fillextend = '')
{
// text watermark requested
if (!$text) {
return false;
}
ImageAlphaBlending($gdimg, true);
$metaTextArray = array('^Fb' => $this->phpThumbObject->getimagesizeinfo['filesize'], '^Fk' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1024), '^Fm' => round($this->phpThumbObject->getimagesizeinfo['filesize'] / 1048576), '^X' => $this->phpThumbObject->getimagesizeinfo[0], '^Y' => $this->phpThumbObject->getimagesizeinfo[1], '^x' => ImageSX($gdimg), '^y' => ImageSY($gdimg), '^^' => '^');
$text = strtr($text, $metaTextArray);
$text = str_replace("\r\n", "\n", $text);
$text = str_replace("\r", "\n", $text);
$textlines = explode("\n", $text);
if (@is_readable($ttffont) && is_file($ttffont)) {
$opacity = 100 - intval(max(min($opacity, 100), 0));
$this->DebugMessage('Using TTF font "' . $ttffont . '"', __FILE__, __LINE__);
$TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
$min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
$max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
//$text_width = round($max_x - $min_x + ($size * 0.5));
$text_width = round($max_x - $min_x);
$min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
$max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
//$text_height = round($max_y - $min_y + ($size * 0.5));
$text_height = round($max_y - $min_y);
$TTFboxChar = ImageTTFbBox($size, $angle, $ttffont, 'jH');
$char_min_y = min($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_max_y = max($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
$char_height = round($char_max_y - $char_min_y);
switch ($alignment) {
case 'T':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = $char_height + $margin;
break;
case 'B':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin;
break;
case 'L':
$text_origin_x = $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'R':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'C':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
break;
case 'TL':
$text_origin_x = $margin;
$text_origin_y = $char_height + $margin;
break;
case 'TR':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = $char_height + $margin;
break;
case 'BL':
$text_origin_x = $margin;
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin;
break;
case 'BR':
default:
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = ImageSY($gdimg) + $TTFbox[1] - $margin;
break;
}
$letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, false, $opacity * 1.27);
if ($alignment == '*') {
$text_origin_y = $char_height + $margin;
while ($text_origin_y - $text_height < ImageSY($gdimg)) {
$text_origin_x = $margin;
while ($text_origin_x < ImageSX($gdimg)) {
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
$text_origin_x += $text_width + $margin;
}
$text_origin_y += $text_height + $margin;
}
} else {
//ImageRectangle($gdimg, $text_origin_x + $min_x, $text_origin_y + $TTFbox[1], $text_origin_x + $min_x + $text_width, $text_origin_y + $TTFbox[1] - $text_height, $letter_color_text);
if (phpthumb_functions::IsHexColor($bg_color)) {
$text_background_alpha = round(127 * ((100 - min(max(0, $bg_opacity), 100)) / 100));
$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, $bg_color, false, $text_background_alpha);
} else {
$text_color_background = phpthumb_functions::ImageHexColorAllocate($gdimg, 'FFFFFF', false, 127);
}
$x1 = $text_origin_x + $min_x;
$y1 = $text_origin_y + $TTFbox[1];
$x2 = $text_origin_x + $min_x + $text_width;
$y2 = $text_origin_y + $TTFbox[1] - $text_height;
$x_TL = eregi('x', $fillextend) ? 0 : min($x1, $x2);
$y_TL = eregi('y', $fillextend) ? 0 : min($y1, $y2);
$x_BR = eregi('x', $fillextend) ? ImageSX($gdimg) : max($x1, $x2);
$y_BR = eregi('y', $fillextend) ? ImageSY($gdimg) : max($y1, $y2);
//while ($y_BR > ImageSY($gdimg)) {
// $y_TL--;
// $y_BR--;
// $text_origin_y--;
//}
ImageFilledRectangle($gdimg, $x_TL, $y_TL, $x_BR, $y_BR, $text_color_background);
//.........這裏部分代碼省略.........
示例7: WatermarkText
function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color = '000000', $ttffont = '', $opacity = 100, $margin = 5, $angle = 0)
{
// text watermark requested
if (!$text) {
return false;
}
$opacity = max(min($opacity, 100), 0);
if (@is_readable($ttffont) && is_file($ttffont)) {
$TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
$min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
$max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
//$text_width = round($max_x - $min_x + ($size * 0.5));
$text_width = round($max_x - $min_x);
$min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
$max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
//$text_height = round($max_y - $min_y + ($size * 0.5));
$text_height = round($max_y - $min_y);
switch ($alignment) {
case 'T':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = $text_height + $margin;
break;
case 'B':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = ImageSY($gdimg) - $text_height + $TTFbox[1] - $min_y - $margin;
break;
case 'L':
$text_origin_x = $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $text_height;
break;
case 'R':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $text_height;
break;
case 'C':
$text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
$text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $text_height;
break;
case 'TL':
$text_origin_x = $margin;
$text_origin_y = $text_height + $margin;
break;
case 'TR':
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = $text_height + $margin;
break;
case 'BL':
$text_origin_x = $margin;
$text_origin_y = ImageSY($gdimg) - $text_height + $TTFbox[1] - $min_y - $margin;
break;
case 'BR':
default:
$text_origin_x = ImageSX($gdimg) - $text_width + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
$text_origin_y = ImageSY($gdimg) - $text_height + $TTFbox[1] - $min_y - $margin;
break;
}
$letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, $opacity * 1.27);
if ($alignment == '*') {
$text_origin_y = $text_height + $margin;
while ($text_origin_y - $text_height < ImageSY($gdimg)) {
$text_origin_x = $margin;
while ($text_origin_x < ImageSX($gdimg)) {
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
$text_origin_x += $text_width + $margin;
}
$text_origin_y += $text_height + $margin;
}
} else {
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
}
return true;
//if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
// if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
// $letter_color_background = ImageColorAllocateAlpha($img_watermark, 127, 127, 127, 127);
// $letter_color_background_mask = ImageColorAllocateAlpha($img_watermark_mask, 127, 127, 127, 127);
// ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $letter_color_background);
// ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $letter_color_background_mask);
//
// $letter_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
// $letter_color_watermark_mask = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
//
// ImageTTFtext($img_watermark, $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y, $letter_color_watermark, $ttffont, $text);
// ImageTTFtext($img_watermark_mask, $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y, -$letter_color_watermark_mask, $ttffont, $text);
//
// $this->ApplyMask($img_watermark_mask, $img_watermark);
// $this->WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
//
// ImageDestroy($img_watermark);
// ImageDestroy($img_watermark_mask);
// return true;
// }
//}
} else {
if ($ttffont) {
//$this->DebugMessage('Using built-in font for text watermark because $ttffont !is_readable('.$ttffont.')', __FILE__, __LINE__);
}
$size = min(5, max(1, $size));
$text_width = ImageFontWidth($size) * strlen($text);
$text_height = ImageFontHeight($size);
if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
//.........這裏部分代碼省略.........