本文整理汇总了PHP中ImageRotate函数的典型用法代码示例。如果您正苦于以下问题:PHP ImageRotate函数的具体用法?PHP ImageRotate怎么用?PHP ImageRotate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ImageRotate函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: rotate
public function rotate($angle, $background = 'FFFFFF')
{
$angle = intval($angle);
if (!is_int($angle) || $angle < 0 || $angle > 360) {
throw new ezcBaseValueException('height', $angle, 'int > 0 && int < 360');
}
$resource = $this->getActiveResource();
$bg = $this->bgArrayFromHex($background);
$gdBackgroundColor = imagecolorallocatealpha($resource, $bg['r'], $bg['g'], $bg['b'], $bg['a']);
$newResource = ImageRotate($resource, $angle, $gdBackgroundColor);
if ($newResource === false) {
throw new ezcImageFilterFailedException('rotate', 'Rotation of image failed.');
}
imagedestroy($resource);
$this->setActiveResource($newResource);
}
示例2: WatermarkText
//.........这里部分代码省略.........
break;
case 'R':
case 'TR':
case 'BR':
$text_origin_x = $originOffsetX ? $originOffsetX - $text_width_line : ImageSX($gdimg) - $text_width_line + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
break;
}
//ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
$this->DebugMessage('WatermarkText() calling ImageTTFtext($gdimg, ' . $size . ', ' . $angle . ', ' . $text_origin_x . ', ' . ($text_origin_y + $y_offset) . ', $letter_color_text, ' . $ttffont . ', ' . $line . ')', __FILE__, __LINE__);
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y + $y_offset, $letter_color_text, $ttffont, $line);
$y_offset += $char_height;
}
}
return true;
} else {
$size = min(5, max(1, $size));
$this->DebugMessage('Using built-in font (size=' . $size . ') for text watermark' . ($ttffont ? ' because $ttffont !is_readable(' . $ttffont . ')' : ''), __FILE__, __LINE__);
$text_width = 0;
$text_height = 0;
foreach ($textlines as $dummy => $line) {
$text_width = max($text_width, ImageFontWidth($size) * strlen($line));
$text_height += ImageFontHeight($size);
}
if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
ImageAlphaBlending($img_watermark, false);
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($img_watermark, $bg_color, false, $text_background_alpha);
} else {
$text_color_background = phpthumb_functions::ImageHexColorAllocate($img_watermark, 'FFFFFF', false, 127);
}
$this->DebugMessage('WatermarkText() calling ImageFilledRectangle($img_watermark, 0, 0, ' . ImageSX($img_watermark) . ', ' . ImageSY($img_watermark) . ', $text_color_background)', __FILE__, __LINE__);
ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
if ($angle && function_exists('ImageRotate')) {
// using $img_watermark_mask is pointless if ImageRotate function isn't available
if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
$mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
ImageAlphaBlending($img_watermark_mask, false);
ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
$mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
}
}
$text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
foreach ($textlines as $key => $line) {
switch ($alignment) {
case 'C':
$x_offset = round(($text_width - ImageFontWidth($size) * strlen($line)) / 2);
$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
$originOffsetY = (ImageSY($gdimg) - ImageSY($img_watermark)) / 2;
break;
case 'T':
$x_offset = round(($text_width - ImageFontWidth($size) * strlen($line)) / 2);
$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
$originOffsetY = $margin;
break;
case 'B':
$x_offset = round(($text_width - ImageFontWidth($size) * strlen($line)) / 2);
$originOffsetX = (ImageSX($gdimg) - ImageSX($img_watermark)) / 2;
$originOffsetY = ImageSY($gdimg) - ImageSY($img_watermark) - $margin;
break;
case 'L':
$x_offset = 0;
$originOffsetX = $margin;
$originOffsetY = (ImageSY($gdimg) - ImageSY($img_watermark)) / 2;
break;
case 'TL':
示例3: rotate
/**
* Rotates image by the given angle
*
* Uses a fast rotation algorythm for custom angles
* or lines copy for multiple of 90 degrees
*
* @param int $angle Rotation angle
* @param array $options array(
* 'canvasColor' => array(r ,g, b), named color or #rrggbb
* )
* @author Pierre-Alain Joye
* @return bool|PEAR_Error TRUE or a PEAR_Error object on error
* @access public
*/
function rotate($angle, $options = null)
{
if ($angle % 360 == 0) {
return true;
}
$color_mask = $this->_getColor('canvasColor', $options, array(255, 255, 255));
$mask = imagecolorresolve($this->imageHandle, $color_mask[0], $color_mask[1], $color_mask[2]);
$this->old_image = $this->imageHandle;
// Multiply by -1 to change the sign, so the image is rotated clockwise
$this->imageHandle = ImageRotate($this->imageHandle, $angle * -1, $mask);
return true;
}
示例4: Rotate
function Rotate()
{
if (!function_exists('ImageRotate')) {
return false;
}
if (!empty($this->ra) || !empty($this->ar)) {
$this->config_background_hexcolor = !empty($this->bg) ? $this->bg : $this->config_background_hexcolor;
if (!eregi('^[0-9A-F]{6}$', $this->config_background_hexcolor)) {
$this->ErrorImage('Invalid hex color string "' . $this->config_background_hexcolor . '" for parameter "bg"');
}
$rotate_angle = 0;
if (!empty($this->ra)) {
$rotate_angle = floatval($this->ra);
} else {
if ($this->ar == 'l' && $this->source_height > $this->source_width) {
$rotate_angle = 270;
} elseif ($this->ar == 'L' && $this->source_height > $this->source_width) {
$rotate_angle = 90;
} elseif ($this->ar == 'p' && $this->source_width > $this->source_height) {
$rotate_angle = 90;
} elseif ($this->ar == 'P' && $this->source_width > $this->source_height) {
$rotate_angle = 270;
}
}
while ($rotate_angle < 0) {
$rotate_angle += 360;
}
$rotate_angle = $rotate_angle % 360;
if ($rotate_angle != 0) {
if (ImageColorTransparent($this->gdimg_source) >= 0) {
// ImageRotate() forgets all about an image's transparency and sets the transparent color to black
// To compensate, flood-fill the transparent color of the source image with the specified background color first
// then rotate and the colors should match
if (!function_exists('ImageIsTrueColor') || !ImageIsTrueColor($this->gdimg_source)) {
// convert paletted image to true-color before rotating to prevent nasty aliasing artifacts
$this->source_width = ImageSX($this->gdimg_source);
$this->source_height = ImageSY($this->gdimg_source);
$gdimg_newsrc = $this->ImageCreateFunction($this->source_width, $this->source_height);
$background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $this->config_background_hexcolor);
ImageFilledRectangle($gdimg_newsrc, 0, 0, $this->source_width, $this->source_height, phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $this->config_background_hexcolor));
ImageCopy($gdimg_newsrc, $this->gdimg_source, 0, 0, 0, 0, $this->source_width, $this->source_height);
ImageDestroy($this->gdimg_source);
unset($this->gdimg_source);
$this->gdimg_source = $gdimg_newsrc;
unset($gdimg_newsrc);
} else {
ImageColorSet($this->gdimg_source, ImageColorTransparent($this->gdimg_source), hexdec(substr($this->config_background_hexcolor, 0, 2)), hexdec(substr($this->config_background_hexcolor, 2, 2)), hexdec(substr($this->config_background_hexcolor, 4, 2)));
ImageColorTransparent($this->gdimg_source, -1);
}
}
$background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_source, $this->config_background_hexcolor);
$this->gdimg_source = ImageRotate($this->gdimg_source, $rotate_angle, $background_color);
$this->source_width = ImageSX($this->gdimg_source);
$this->source_height = ImageSY($this->gdimg_source);
}
}
return true;
}
示例5: Rotate
function Rotate()
{
if ($this->ra || $this->ar) {
if (!function_exists('ImageRotate')) {
$this->DebugMessage('!function_exists(ImageRotate)', __FILE__, __LINE__);
return false;
}
if (!(include_once dirname(__FILE__) . '/phpthumb.filters.php')) {
$this->DebugMessage('Error including "' . dirname(__FILE__) . '/phpthumb.filters.php" which is required for applying filters (' . implode(';', $this->fltr) . ')', __FILE__, __LINE__);
return false;
}
$this->config_background_hexcolor = $this->bg ? $this->bg : $this->config_background_hexcolor;
if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
return $this->ErrorImage('Invalid hex color string "' . $this->config_background_hexcolor . '" for parameter "bg"');
}
$rotate_angle = 0;
if ($this->ra) {
$rotate_angle = floatval($this->ra);
} else {
if ($this->ar == 'x') {
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.2.0', '>=')) {
if ($this->sourceFilename) {
if (function_exists('exif_read_data')) {
if ($exif_data = @exif_read_data($this->sourceFilename, 'IFD0')) {
// http://sylvana.net/jpegcrop/exif_orientation.html
switch (@$exif_data['Orientation']) {
case 1:
$rotate_angle = 0;
break;
case 3:
$rotate_angle = 180;
break;
case 6:
$rotate_angle = 270;
break;
case 8:
$rotate_angle = 90;
break;
default:
$this->DebugMessage('EXIF auto-rotate failed because unknown $exif_data[Orientation] "' . @$exif_data['Orientation'] . '"', __FILE__, __LINE__);
return false;
break;
}
$this->DebugMessage('EXIF auto-rotate set to ' . $rotate_angle . ' degrees ($exif_data[Orientation] = "' . @$exif_data['Orientation'] . '")', __FILE__, __LINE__);
} else {
$this->DebugMessage('failed: exif_read_data(' . $this->sourceFilename . ')', __FILE__, __LINE__);
return false;
}
} else {
$this->DebugMessage('!function_exists(exif_read_data)', __FILE__, __LINE__);
return false;
}
} else {
$this->DebugMessage('Cannot auto-rotate from EXIF data because $this->sourceFilename is empty', __FILE__, __LINE__);
return false;
}
} else {
$this->DebugMessage('Cannot auto-rotate from EXIF data because PHP is less than v4.2.0 (' . phpversion() . ')', __FILE__, __LINE__);
return false;
}
} elseif ($this->ar == 'l' && $this->source_height > $this->source_width) {
$rotate_angle = 270;
} elseif ($this->ar == 'L' && $this->source_height > $this->source_width) {
$rotate_angle = 90;
} elseif ($this->ar == 'p' && $this->source_width > $this->source_height) {
$rotate_angle = 90;
} elseif ($this->ar == 'P' && $this->source_width > $this->source_height) {
$rotate_angle = 270;
}
}
while ($rotate_angle < 0) {
$rotate_angle += 360;
}
$rotate_angle = $rotate_angle % 360;
if ($rotate_angle != 0) {
$background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_source, $this->config_background_hexcolor);
if (phpthumb_functions::gd_version() >= 2 && $this->thumbnailFormat == 'png' && !$this->bg && $rotate_angle % 90) {
if ($gdimg_rotate_mask = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_source), ImageSY($this->gdimg_source))) {
$this->gdimg_source = ImageRotate($this->gdimg_source, $rotate_angle, $background_color);
$color_mask_opaque = ImageColorAllocate($gdimg_rotate_mask, 0xff, 0xff, 0xff);
$color_mask_transparent = ImageColorAllocate($gdimg_rotate_mask, 0x0, 0x0, 0x0);
ImageFilledRectangle($gdimg_rotate_mask, 0, 0, ImageSX($gdimg_rotate_mask), ImageSY($gdimg_rotate_mask), $color_mask_opaque);
$gdimg_rotate_mask = ImageRotate($gdimg_rotate_mask, $rotate_angle, $color_mask_transparent);
ImageAlphaBlending($this->gdimg_source, false);
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
ImageSaveAlpha($this->gdimg_source, true);
}
$this->is_alpha = true;
phpthumb_filters::ApplyMask($gdimg_rotate_mask, $this->gdimg_source);
ImageDestroy($gdimg_rotate_mask);
$this->source_width = ImageSX($this->gdimg_source);
$this->source_height = ImageSY($this->gdimg_source);
} else {
$this->DebugMessage('ImageCreateFromStringReplacement() failed for "' . $MaskFilename . '"', __FILE__, __LINE__);
}
} else {
if (phpthumb_functions::gd_version() >= 2) {
$this->DebugMessage('Using non-alpha rotate because gd_version is "' . phpthumb_functions::gd_version() . '"', __FILE__, __LINE__);
} else {
$this->DebugMessage('Using non-alpha rotate because $this->thumbnailFormat is "' . $this->thumbnailFormat . '"', __FILE__, __LINE__);
//.........这里部分代码省略.........
示例6: WatermarkText
//.........这里部分代码省略.........
$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;
// }
//}
} else {
$size = min(5, max(1, $size));
$this->DebugMessage('Using built-in font (size=' . $size . ') for text watermark' . ($ttffont ? ' because $ttffont !is_readable(' . $ttffont . ')' : ''), __FILE__, __LINE__);
$text_width = 0;
$text_height = 0;
foreach ($textlines as $line) {
$text_width = max($text_width, ImageFontWidth($size) * strlen($line));
$text_height += ImageFontHeight($size);
}
if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
ImageAlphaBlending($img_watermark, false);
$text_color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark, 255, 255, 255, 127);
ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
if ($angle && function_exists('ImageRotate')) {
// using $img_watermark_mask is pointless if ImageRotate function isn't available
if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
$mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
ImageAlphaBlending($img_watermark_mask, false);
ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
$mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
}
}
$text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
foreach ($textlines as $key => $line) {
switch ($alignment) {
case 'C':
case 'T':
case 'B':
$x_offset = round(($text_width - ImageFontWidth($size) * strlen($line)) / 2);
break;
case 'L':
case 'TL':
case 'BL':
$x_offset = 0;
break;
case 'R':
case 'TR':
case 'BR':
default:
$x_offset = $text_width - ImageFontWidth($size) * strlen($line);
break;
}
ImageString($img_watermark, $size, $x_offset, $key * ImageFontHeight($size), $line, $text_color_watermark);
if ($angle && $img_watermark_mask) {
ImageString($img_watermark_mask, $size, $x_offset, $key * ImageFontHeight($size), $text, $mask_color_watermark);
}
}
if ($angle && $img_watermark_mask) {
$img_watermark = ImageRotate($img_watermark, $angle, $text_color_background);
$img_watermark_mask = ImageRotate($img_watermark_mask, $angle, $mask_color_background);
phpthumb_filters::ApplyMask($img_watermark_mask, $img_watermark);
}
phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
ImageDestroy($img_watermark);
return true;
}
}
return false;
}
示例7: WatermarkText
//.........这里部分代码省略.........
$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)) {
ImageAlphaBlending($img_watermark, false);
$text_color_background = ImageColorAllocateAlpha($img_watermark, 255, 255, 255, 127);
ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
$text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
ImageString($img_watermark, $size, 0, 0, $text, $text_color_watermark);
if ($angle) {
if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
$mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
ImageAlphaBlending($img_watermark_mask, false);
ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
$mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
ImageString($img_watermark_mask, $size, 0, 0, $text, $mask_color_watermark);
$img_watermark = ImageRotate($img_watermark, $angle, $text_color_background);
$img_watermark_mask = ImageRotate($img_watermark_mask, $angle, $mask_color_background);
}
phpthumb_filters::ApplyMask($img_watermark_mask, $img_watermark);
}
phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
ImageDestroy($img_watermark);
return true;
}
}
return false;
}
示例8: WatermarkText
//.........这里部分代码省略.........
$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);
ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
}
return true;
} else {
$size = min(5, max(1, $size));
$this->DebugMessage('Using built-in font (size=' . $size . ') for text watermark' . ($ttffont ? ' because $ttffont !is_readable(' . $ttffont . ')' : ''), __FILE__, __LINE__);
$text_width = 0;
$text_height = 0;
foreach ($textlines as $dummy => $line) {
$text_width = max($text_width, ImageFontWidth($size) * strlen($line));
$text_height += ImageFontHeight($size);
}
if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
ImageAlphaBlending($img_watermark, false);
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($img_watermark, $bg_color, false, $text_background_alpha);
} else {
$text_color_background = phpthumb_functions::ImageHexColorAllocate($img_watermark, 'FFFFFF', false, 127);
}
ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
if ($angle && function_exists('ImageRotate')) {
// using $img_watermark_mask is pointless if ImageRotate function isn't available
if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
$mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
ImageAlphaBlending($img_watermark_mask, false);
ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
$mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
}
}
$text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
foreach ($textlines as $key => $line) {
switch ($alignment) {
case 'C':
case 'T':
case 'B':
$x_offset = round(($text_width - ImageFontWidth($size) * strlen($line)) / 2);
break;
case 'L':
case 'TL':
case 'BL':
$x_offset = 0;
break;
case 'R':
case 'TR':
case 'BR':
default:
$x_offset = $text_width - ImageFontWidth($size) * strlen($line);
break;
}
ImageString($img_watermark, $size, $x_offset, $key * ImageFontHeight($size), $line, $text_color_watermark);
if ($angle && $img_watermark_mask) {
ImageString($img_watermark_mask, $size, $x_offset, $key * ImageFontHeight($size), $text, $mask_color_watermark);
}
}
if ($angle && $img_watermark_mask) {
$img_watermark = ImageRotate($img_watermark, $angle, $text_color_background);
$img_watermark_mask = ImageRotate($img_watermark_mask, $angle, $mask_color_background);
phpthumb_filters::ApplyMask($img_watermark_mask, $img_watermark);
}
phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
ImageDestroy($img_watermark);
return true;
}
}
return false;
}
示例9: rotate_gd
/**
* rotate an image using GD library;
* @param string $filename to the source file
* @param integer $degrees to rotate the image clockwise;
* @return nothing;
* @access private
*/
function rotate_gd($sourceFileName, $degree)
{
if (!$this->gdInfo >= 1 || !$this->checkGdFileType($sourceFileName)) {
return false;
}
if (!function_exists('imagerotate')) {
return false;
}
$img =& $this->getImg($sourceFileName);
if ($this->hasError()) {
return false;
}
$srcWidth = ImageSX($img);
$srcHeight = ImageSY($img);
if ($srcWidth > $srcHeight) {
$newd = $srcWidth;
$corection = $srcWidth - $srcHeight;
$landscape = 1;
} else {
$newd = $srcHeight;
$corection = $srcHeight - $srcWidth;
$landscape = 0;
}
$degree = 360 - $degree;
switch ($degree) {
case 360:
case 0:
$w = $srcWidth;
$h = $srcHeight;
$x1 = 0;
$y1 = 0;
break;
case 180:
$w = $srcWidth;
$h = $srcHeight;
if ($landscape) {
$x1 = 0;
$y1 = $corection;
} else {
$x1 = $corection;
$y1 = 0;
}
break;
case 90:
$w = $srcHeight;
$h = $srcWidth;
if ($landscape) {
$x1 = 0;
$y1 = 0;
} else {
$x1 = 0;
$y1 = $corection;
}
break;
case 270:
$w = $srcHeight;
$h = $srcWidth;
if ($landscape) {
$x1 = $corection;
$y1 = 0;
} else {
$x1 = 0;
$y1 = 0;
}
break;
}
$destImage =& $this->getImageCreate($newd, $newd);
$finalImage =& $this->getImageCreate($w, $h);
$this->getImageCopyResampled($destImage, $img, 0, 0, 0, 0, $srcWidth, $srcHeight, $srcWidth, $srcHeight);
$rotatedImage = ImageRotate($destImage, $degree, 0);
$this->getImageCopyResampled($finalImage, $rotatedImage, 0, 0, 0 + $x1, 0 + $y1, $w, $h, $w, $h);
ImageDestroy($img);
$this->createNewImg($finalImage, $sourceFileName, $this->qualityLevel);
return true;
}
示例10: _done
/**
* Output to the canvas
* @param int $type The type of image to output, i.e. IMG_PNG (default) and IMG_JPEG
* @access private
*/
function _done($type = IMG_PNG)
{
$timeStart = $this->_getMicroTime();
$this->_debug("Output started $timeStart");
if ($this->_shadow) {
$this->setPadding(20);
$this->_setCoords($this->_left, $this->_top, $this->_right -10, $this->_bottom-10);
}
$this->_updateCoords();
if ($this->_fillStyle) {
ImageFilledRectangle($this->_canvas(), $this->_left, $this->_top, $this->_right, $this->_bottom, $this->_getFillStyle());
}
if (!file_exists(dirname(__FILE__)."/Graph/Images/logo.png")) {
$error = "Could not find Logo your installation may be incomplete";
ImageLine($this->_canvas(), 0, 0, $this->width(), $this->height(), $this->_color(IMAGE_GRAPH_RED));
ImageLine($this->_canvas(), $this->width(), 0, 0, $this->height(), $this->_color(IMAGE_GRAPH_RED));
ImageString($this->_canvas(), IMAGE_GRAPH_FONT, ($this->width() - ImageFontWidth(IMAGE_GRAPH_FONT) * strlen($error)) / 2, ($this->height() - ImageFontHeight(IMAGE_GRAPH_FONT)) / 2, $error, $this->_color(IMAGE_GRAPH_RED));
} else {
parent::_done();
}
if (isset($this->_borderStyle)) {
$this->_debug("Drawing border");
ImageRectangle($this->_canvas(), $this->_left, $this->_top, $this->_right, $this->_bottom, $this->_getBorderStyle());
}
if (($this->_outputImage) and (!IMAGE_GRAPH_DEBUG)) {
header("Expires: Tue, 2 Jul 1974 17:41:00 GMT"); // Date in the past
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache");
header("Content-type: image/". ($type == IMG_JPG ? "jpeg" : "png"));
header("Content-Disposition: attachment; filename = \"". (isset($_GET['thumb']) ? $_GET['thumb'] : (isset($_GET['image']) ? $_GET['image'] : ""))."\"");
}
if ($this->_rotation) {
$this->_canvas = ImageRotate($this->_canvas(), $this->_rotation, $this->_getFillStyle());
}
$timeEnd = $this->_getMicroTime();
$this->_debug("Output ended $timeEnd");
if ($this->_showTime) {
ImageString($this->_canvas(), FONT, $this->_left + $this->width() * 0.15, $this->_bottom - $this->_height * 0.1 - ImageFontHeight(IMAGE_GRAPH_FONT), "Generated in ".sprintf("%0.3f", $timeEnd - $timeStart)." sec", $this->_color(IMAGE_GRAPH_RED));
}
if (!$this->_hideLogo) {
$logo = new Image_Graph_Logo(dirname(__FILE__)."/Graph/Images/logo.png", IMAGE_GRAPH_ALIGN_TOP_RIGHT);
$logo->_setParent($this);
$logo->_done();
}
if ($this->_antialias) {
$this->_performAntialias();
}
if ($this->_fileName) {
if (strtolower(substr($this->_fileName, -4)) == ".png") {
ImagePNG($this->_canvas(), $this->_fileName);
} else {
ImageJPEG($this->_canvas(), $this->_fileName);
}
}
if (($this->_thumbWidth) and ($this->_thumbHeight)) {
if (isset($GLOBALS['_Image_Graph_gd2'])) {
$thumbnail = ImageCreateTrueColor($this->_thumbWidth, $this->_thumbHeight);
ImageCopyResampled($thumbnail, $this->_canvas(), 0, 0, 0, 0, $this->_thumbWidth, $this->_thumbHeight, $this->width(), $this->height());
} else {
$thumbnail = ImageCreate($this->_thumbWidth, $this->_thumbHeight);
ImageCopyResized($thumbnail, $this->_canvas(), 0, 0, 0, 0, $this->_thumbWidth, $this->_thumbHeight, $this->width(), $this->height());
}
if ($this->_thumbFileName) {
if (strtolower(substr($this->_thumbFileName, -4)) == ".png") {
ImagePNG($thumbnail, $this->_thumbFileName);
} else {
ImageJPEG($thumbnail, $this->_thumbFileName);
}
ImageDestroy($thumbnail);
} else {
ImageDestroy($this->_canvas());
$this->_canvas = $thumbnail;
}
}
if (($this->_outputImage) and (!IMAGE_GRAPH_DEBUG)) {
if ($type == IMG_JPG) {
ImageJPEG($this->_canvas());
} else {
//.........这里部分代码省略.........
示例11: rotate
function rotate($d)
{
$this->image = ImageRotate($this->image, $d, 0);
}
示例12: OutputImage
function OutputImage($im, $format, $quality, $uuid)
{
switch ($format) {
case "JPEG":
$im = ImageRotate($im, 0, 0);
ImageJPEG($im, "/usr/share/cpm/tmp/{$uuid}.jpg", $quality);
break;
case "PNG":
ImagePNG($im);
break;
case "GIF":
ImageGIF($im);
break;
}
}
示例13: edit_image
public static function edit_image($imagedata, $output_format = "jpg", $output_filename = "", $output_quality = 75, $width = "", $height = "", $keep_aspect_ratio = true, $interlace = true, $crop_x = 0, $crop_y = 0, $crop_width = -1, $crop_height = -1, $rotate_angle = 0, $fitinside = false)
{
$output_format = strtolower($output_format);
if ($output_format === 'jpeg') {
$output_format = "jpg";
}
$_fromFile = strlen($imagedata) < 255 && @file_exists($imagedata);
// Output format is available
if (in_array($output_format, self::supported_image_types())) {
// Set quality for JPG images
if ($output_format === 'jpg') {
// Keep quality between 1 and 99
$output_quality = max(1, min(99, is_int($output_quality) ? $output_quality : 75));
}
$_gdimg = $_fromFile ? self::ImageCreateFromFileReplacement($imagedata) : self::ImageCreateFromStringReplacement($imagedata);
// Now we need to ensure that we could read the file
if ($_gdimg) {
// Detect dimension of image
$_width = ImageSX($_gdimg);
$_height = ImageSY($_gdimg);
if ($rotate_angle != 0 && function_exists("ImageRotate")) {
$rotate_angle = floatval($rotate_angle);
while ($rotate_angle < 0) {
$rotate_angle += 360;
}
$rotate_angle = $rotate_angle % 360;
if ($rotate_angle != 0) {
$_gdimg = ImageRotate($_gdimg, $rotate_angle, 0);
$_width = ImageSX($_gdimg);
$_height = ImageSY($_gdimg);
}
}
$_outsize = self::calculate_image_size($_width, $_height, $width, $height, $keep_aspect_ratio, true, $fitinside);
// Decide, which functions to use (depends on version of GD library)
$_image_create_function = self::gd_version() >= 2.0 ? "imagecreatetruecolor" : "imagecreate";
$_image_resize_function = function_exists('imagecopyresampled') ? "imagecopyresampled" : "imagecopyresized";
$_outsize["width"] = max(1, $_outsize["width"]);
$_outsize["height"] = max(1, $_outsize["height"]);
// Now create the image
$_output_gdimg = $_image_create_function($_outsize["width"], $_outsize["height"]);
// this image is always black
/* $GDInfo = self::gd_info();
// DEBIAN EDGE FIX => crashes at imagefill, so use old Method
if($GDInfo["GD Version"] === '2.0 or higher' && !function_exists("imagerotate")){
// set black to transparent!
if($output_format === 'gif' || $output_format === 'png'){ // transparency with gifs
imagecolortransparent($_output_gdimg, imagecolorallocate($_output_gdimg, 0, 0, 0)); // set this color to transparent - done
}
} else {
*/
// preserve transparency of png and gif images:
switch ($output_format) {
case "gif":
$colorTransparent = imagecolortransparent($_gdimg);
imagepalettecopy($_gdimg, $_output_gdimg);
imagefill($_output_gdimg, 0, 0, $colorTransparent);
imagecolortransparent($_output_gdimg, $colorTransparent);
imagetruecolortopalette($_output_gdimg, true, 256);
break;
case "png":
imagealphablending($_output_gdimg, false);
//$transparent = imagecolorallocatealpha($_output_gdimg, 0, 0, 0, 127);
$transparent = imagecolorallocatealpha($_output_gdimg, 255, 255, 255, 127);
imagefill($_output_gdimg, 0, 0, $transparent);
imagesavealpha($_output_gdimg, true);
break;
default:
}
//}
// Resize image
//if($_outsize["width"] == "1")
if ($fitinside && $keep_aspect_ratio && $width && $height) {
$wratio = $width / $_width;
$hratio = $height / $_height;
$ratio = max($width / $_width, $height / $_height);
$h = $height / $ratio;
$w = $width / $ratio;
if ($wratio < $hratio) {
$x = ($_width - $width / $ratio) / 2;
$y = 0;
} else {
$x = 0;
$y = ($_height - $height / $ratio) / 2;
}
// Set thumbnail focus point -ah2015
if (true) {
echo '<script>console.log("TX:"+' . $x . ', "TY:"+' . $y . ', "OWidth:"+' . $_width . ', "TWidth"+' . $width . ', "OHeight:"+' . $_height . ', "THeight"+' . $height . ');</script>';
$x_focus = $crop_x;
// von -1.0 bis 1.0
$y_focus = $crop_y;
// von -1.0 bis 1.0
$x = $x + $x * $x_focus;
$y = $y + $y * $y_focus;
}
$_image_resize_function($_output_gdimg, $_gdimg, 0, 0, $x, $y, $width, $height, $w, $h);
} else {
$_image_resize_function($_output_gdimg, $_gdimg, 0, 0, 0, 0, $_outsize["width"], $_outsize["height"], $_width, $_height);
}
// PHP 4.4.1 GDLIB-Bug/Safemode - Workarround
if ($output_filename != "" && file_exists($output_filename)) {
//.........这里部分代码省略.........