summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2015-01-31 22:30:38 +0100
committerAndrey Andreev <narf@devilix.net>2015-01-31 22:30:38 +0100
commitb8fe20e3d338359778ede412780206cccc4b1da3 (patch)
tree7e4817f62a4b21a7d6bd9ca4536243c90bc6333b
parent7a5e3da936ffaab0ebd7d07dbf5e3737ff91c440 (diff)
parent9c855325189e7ec1ecf2f4666280af038b6cb00e (diff)
Merge pull request #3542 from omma2289/develop
Fixed watermark function to work without drop shadow Close #3536 Close #3539
-rw-r--r--system/libraries/Image_lib.php76
1 files changed, 46 insertions, 30 deletions
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 92e47507f..e056654bb 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -1311,12 +1311,14 @@ class CI_Image_lib {
$y_axis = $this->wm_vrt_offset + $this->wm_padding;
if ($this->wm_use_drop_shadow === FALSE)
+ {
$this->wm_shadow_distance = 0;
+ }
$this->wm_vrt_alignment = strtoupper($this->wm_vrt_alignment[0]);
$this->wm_hor_alignment = strtoupper($this->wm_hor_alignment[0]);
- // Set verticle alignment
+ // Set vertical alignment
if ($this->wm_vrt_alignment === 'M')
{
$y_axis += ($this->orig_height / 2) + ($fontheight / 2);
@@ -1325,53 +1327,67 @@ class CI_Image_lib {
{
$y_axis += $this->orig_height - $fontheight - $this->wm_shadow_distance - ($fontheight / 2);
}
-
- $x_shad = $x_axis + $this->wm_shadow_distance;
- $y_shad = $y_axis + $this->wm_shadow_distance;
-
+
+ // Set horizontal alignment
+ if ($this->wm_hor_alignment === 'R')
+ {
+ $x_axis += $this->orig_width - ($fontwidth * strlen($this->wm_text)) - $this->wm_shadow_distance;
+ }
+ elseif ($this->wm_hor_alignment === 'C')
+ {
+ $x_axis += floor(($this->orig_width - ($fontwidth * strlen($this->wm_text))) / 2);
+ }
+
if ($this->wm_use_drop_shadow)
{
- // Set horizontal alignment
- if ($this->wm_hor_alignment === 'R')
- {
- $x_shad += $this->orig_width - ($fontwidth * strlen($this->wm_text));
- $x_axis += $this->orig_width - ($fontwidth * strlen($this->wm_text));
- }
- elseif ($this->wm_hor_alignment === 'C')
- {
- $x_shad += floor(($this->orig_width - ($fontwidth * strlen($this->wm_text))) / 2);
- $x_axis += floor(($this->orig_width - ($fontwidth * strlen($this->wm_text))) / 2);
- }
-
- /* Set RGB values for text and shadow
+ // Offset from text
+ $x_shad = $x_axis + $this->wm_shadow_distance;
+ $y_shad = $y_axis + $this->wm_shadow_distance;
+
+ /* Set RGB values for shadow
*
* First character is #, so we don't really need it.
* Get the rest of the string and split it into 2-length
* hex values:
*/
- $txt_color = str_split(substr($this->wm_font_color, 1, 6), 2);
- $txt_color = imagecolorclosest($src_img, hexdec($txt_color[0]), hexdec($txt_color[1]), hexdec($txt_color[2]));
$drp_color = str_split(substr($this->wm_shadow_color, 1, 6), 2);
$drp_color = imagecolorclosest($src_img, hexdec($drp_color[0]), hexdec($drp_color[1]), hexdec($drp_color[2]));
-
- // Add the text to the source image
+
+ // Add the shadow to the source image
if ($this->wm_use_truetype)
{
imagettftext($src_img, $this->wm_font_size, 0, $x_shad, $y_shad, $drp_color, $this->wm_font_path, $this->wm_text);
- imagettftext($src_img, $this->wm_font_size, 0, $x_axis, $y_axis, $txt_color, $this->wm_font_path, $this->wm_text);
}
else
{
imagestring($src_img, $this->wm_font_size, $x_shad, $y_shad, $this->wm_text, $drp_color);
- imagestring($src_img, $this->wm_font_size, $x_axis, $y_axis, $this->wm_text, $txt_color);
}
+ }
+
+ /* Set RGB values for text
+ *
+ * First character is #, so we don't really need it.
+ * Get the rest of the string and split it into 2-length
+ * hex values:
+ */
+ $txt_color = str_split(substr($this->wm_font_color, 1, 6), 2);
+ $txt_color = imagecolorclosest($src_img, hexdec($txt_color[0]), hexdec($txt_color[1]), hexdec($txt_color[2]));
- // We can preserve transparency for PNG images
- if ($this->image_type === 3)
- {
- imagealphablending($src_img, FALSE);
- imagesavealpha($src_img, TRUE);
- }
+ // Add the text to the source image
+ if ($this->wm_use_truetype)
+ {
+ imagettftext($src_img, $this->wm_font_size, 0, $x_axis, $y_axis, $txt_color, $this->wm_font_path, $this->wm_text);
+ }
+ else
+ {
+ imagestring($src_img, $this->wm_font_size, $x_axis, $y_axis, $this->wm_text, $txt_color);
+ }
+
+ // We can preserve transparency for PNG images
+ if ($this->image_type === 3)
+ {
+ imagealphablending($src_img, FALSE);
+ imagesavealpha($src_img, TRUE);
}
// Output the final image