📄 phpthumb.class.php
字号:
$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"');
}
$background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_background_hexcolor);
ImageFilledRectangle($gdimg_flatten_temp, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $background_color);
ImageCopy($gdimg_flatten_temp, $this->gdimg_output, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
ImageAlphaBlending($this->gdimg_output, true);
if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
ImageSaveAlpha($this->gdimg_output, false);
}
ImageColorTransparent($this->gdimg_output, -1);
ImageCopy($this->gdimg_output, $gdimg_flatten_temp, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
ImageDestroy($gdimg_flatten_temp);
return true;
} else {
$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
}
return false;
}
function ApplyFilters() {
if ($this->fltr && is_array($this->fltr)) {
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;
}
foreach ($this->fltr as $filtercommand) {
@list($command, $parameter) = explode('|', $filtercommand, 2);
$this->DebugMessage('Attempting to process filter command "'.$command.'"', __FILE__, __LINE__);
switch ($command) {
case 'brit':
phpthumb_filters::Brightness($this->gdimg_output, $parameter);
break;
case 'cont':
phpthumb_filters::Contrast($this->gdimg_output, $parameter);
break;
case 'ds':
phpthumb_filters::Desaturate($this->gdimg_output, $parameter, '');
break;
case 'sat':
phpthumb_filters::Saturation($this->gdimg_output, $parameter, '');
break;
case 'gray':
phpthumb_filters::Grayscale($this->gdimg_output);
break;
case 'clr':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping Colorize() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
break;
}
@list($amount, $color) = explode('|', $parameter);
phpthumb_filters::Colorize($this->gdimg_output, $amount, $color);
break;
case 'sep':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping Sepia() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
break;
}
@list($amount, $color) = explode('|', $parameter);
phpthumb_filters::Sepia($this->gdimg_output, $amount, $color);
break;
case 'gam':
phpthumb_filters::Gamma($this->gdimg_output, $parameter);
break;
case 'neg':
phpthumb_filters::Negative($this->gdimg_output);
break;
case 'th':
phpthumb_filters::Threshold($this->gdimg_output, $parameter);
break;
case 'rcd':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping ReduceColorDepth() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
break;
}
@list($colors, $dither) = explode('|', $parameter);
$colors = ($colors ? (int) $colors : 256);
$dither = ((strlen($dither) > 0) ? (bool) $dither : true);
phpthumb_filters::ReduceColorDepth($this->gdimg_output, $colors, $dither);
break;
case 'flip':
phpthumb_filters::Flip($this->gdimg_output, (strpos(strtolower($parameter), 'x') !== false), (strpos(strtolower($parameter), 'y') !== false));
break;
case 'edge':
phpthumb_filters::EdgeDetect($this->gdimg_output);
break;
case 'emb':
phpthumb_filters::Emboss($this->gdimg_output);
break;
case 'bvl':
@list($width, $color1, $color2) = explode('|', $parameter);
phpthumb_filters::Bevel($this->gdimg_output, $width, $color1, $color2);
break;
case 'lvl':
@list($band, $min, $max) = explode('|', $parameter);
$band = ($band ? $band : '*');
$min = ((strlen($min) > 0) ? $min : '-1');
$max = ((strlen($max) > 0) ? $max : '-1');
phpthumb_filters::HistogramStretch($this->gdimg_output, $band, $min, $max);
break;
case 'wb':
phpthumb_filters::WhiteBalance($this->gdimg_output, $parameter);
break;
case 'hist':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping HistogramOverlay() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
break;
}
@list($bands, $colors, $width, $height, $alignment, $opacity, $margin) = explode('|', $parameter);
$bands = ($bands ? $bands : '*');
$colors = ($colors ? $colors : '');
$width = ($width ? $width : 0.25);
$height = ($height ? $height : 0.25);
$alignment = ($alignment ? $alignment : 'BR');
$opacity = ($opacity ? $opacity : 50);
$margin = ($margin ? $margin : 5);
phpthumb_filters::HistogramOverlay($this->gdimg_output, $bands, $colors, $width, $height, $alignment, $opacity, $margin);
break;
case 'fram':
@list($frame_width, $edge_width, $color_frame, $color1, $color2) = explode('|', $parameter);
phpthumb_filters::Frame($this->gdimg_output, $frame_width, $edge_width, $color_frame, $color1, $color2);
break;
case 'drop':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping DropShadow() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
return false;
}
$this->is_alpha = true;
@list($distance, $width, $color, $angle, $fade) = explode('|', $parameter);
phpthumb_filters::DropShadow($this->gdimg_output, $distance, $width, $color, $angle, $fade);
break;
case 'mask':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping Mask() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
return false;
}
$mask_filename = $this->ResolveFilenameToAbsolute($parameter);
if (@is_readable($mask_filename) && ($fp_mask = @fopen($mask_filename, 'rb'))) {
$MaskImageData = fread($fp_mask, filesize($mask_filename));
fclose($fp_mask);
if ($gdimg_mask = $this->ImageCreateFromStringReplacement($MaskImageData)) {
$this->is_alpha = true;
phpthumb_filters::ApplyMask($gdimg_mask, $this->gdimg_output);
ImageDestroy($gdimg_mask);
} else {
$this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$mask_filename.'"', __FILE__, __LINE__);
}
} else {
$this->DebugMessage('Cannot open mask file "'.$mask_filename.'"', __FILE__, __LINE__);
}
break;
case 'elip':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping Elipse() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
return false;
}
$this->is_alpha = true;
phpthumb_filters::Elipse($this->gdimg_output);
break;
case 'ric':
if (phpthumb_functions::gd_version() < 2) {
$this->DebugMessage('Skipping RoundedImageCorners() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
return false;
}
@list($radius_x, $radius_y) = explode('|', $parameter);
if (($radius_x < 1) || ($radius_y < 1)) {
$this->DebugMessage('Skipping RoundedImageCorners('.$radius_x.', '.$radius_y.') because x/y radius is less than 1', __FILE__, __LINE__);
break;
}
$this->is_alpha = true;
phpthumb_filters::RoundedImageCorners($this->gdimg_output, $radius_x, $radius_y);
break;
case 'bord':
@list($border_width, $radius_x, $radius_y, $hexcolor_border) = explode('|', $parameter);
$this->is_alpha = true;
phpthumb_filters::ImageBorder($this->gdimg_output, $border_width, $radius_x, $radius_y, $hexcolor_border);
break;
case 'over':
@list($filename, $underlay, $margin, $opacity) = explode('|', $parameter);
$underlay = (bool) ($underlay ? $underlay : false);
$margin = ((strlen($margin) > 0) ? $margin : ($underlay ? 0.1 : 0.0));
$opacity = ((strlen($opacity) > 0) ? $opacity : 100);
if (($margin > 0) && ($margin < 1)) {
$margin = min(0.499, $margin);
} elseif (($margin > -1) && ($margin < 0)) {
$margin = max(-0.499, $margin);
}
$filename = $this->ResolveFilenameToAbsolute($filename);
if (@is_readable($filename) && ($fp_watermark = @fopen($filename, 'rb'))) {
$WatermarkImageData = fread($fp_watermark, filesize($filename));
fclose($fp_watermark);
if ($img_watermark = $this->ImageCreateFromStringReplacement($WatermarkImageData)) {
if ($margin < 1) {
$resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * (ImageSX($this->gdimg_output) * $margin)));
$resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * (ImageSY($this->gdimg_output) * $margin)));
} else {
$resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * $margin));
$resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * $margin));
}
if ($underlay) {
if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
ImageAlphaBlending($img_watermark_resized, false);
ImageSaveAlpha($img_watermark_resized, true);
phpthumb_functions::ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
if ($img_source_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
ImageAlphaBlending($img_source_resized, false);
ImageSaveAlpha($img_source_resized, true);
phpthumb_functions::ImageResizeFunction($img_source_resized, $this->gdimg_output, 0, 0, 0, 0, ImageSX($img_source_resized), ImageSY($img_source_resized), ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
phpthumb_filters::WatermarkOverlay($img_watermark_resized, $img_source_resized, 'C', $opacity, $margin);
ImageCopy($this->gdimg_output, $img_watermark_resized, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
} else {
$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
}
ImageDestroy($img_watermark_resized);
} else {
$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).')', __FILE__, __LINE__);
}
} else { // overlay
if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
ImageAlphaBlending($img_watermark_resized, false);
ImageSaveAlpha($img_watermark_resized, true);
phpthumb_functions::ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
phpthumb_filters::WatermarkOverlay($this->gdimg_output, $img_watermark_resized, 'C', $opacity, $margin);
ImageDestroy($img_watermark_resized);
} else {
$this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
}
}
ImageDestroy($img_watermark);
} else {
$this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$filename.'"', __FILE__, __LINE__);
}
} else {
$this->DebugMessage('Cannot open overlay file "'.$filename.'"', __FILE__, __LINE__);
}
break;
case 'wmi':
@list($filename, $alignment, $opacity, $margin) = explode('|', $parameter);
$alignment = ($alignment ? $alignment : 'BR');
$opacity = (strlen($opacity) ? $opacity : 50);
$margin = (strlen($margin) ? $margin : 5);
$filename = $this->ResolveFilenameToAbsolute($filename);
if (@is_readable($filename) && ($fp_watermark = @fopen($filename, 'rb'))) {
$WatermarkImageData = fread($fp_watermark, filesize($filename));
fclose($fp_watermark);
if ($img_watermark = $this->ImageCreateFromStringReplacement($WatermarkImageData)) {
// great
phpthumb_filters::WatermarkOverlay($this->gdimg_output, $img_watermark, $alignment, $opacity, $margin);
ImageDestroy($img_watermark);
} else {
$this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$filename.'"', __FILE__, __LINE__);
}
} else {
$this->DebugMessage('Cannot open watermark file "'.$filename.'"', __FILE__, __LINE__);
}
break;
case 'wmt':
@list($text, $size, $alignment, $hex_color, $ttffont, $opacity, $margin, $angle) = explode('|', $parameter);
$text = ($text ? $text : '')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -