Codeigniter图像处理文本水印换行符

时间:2013-06-06 11:17:15

标签: php codeigniter

我正在尝试使用CodeIgniters Image Manipulation库在图像上添加多行水印,但我无法使其工作。

我正在用

设置文字
$config['source_image']= $newFile;
$str = '';
$str.='Px: ';
$str .= $config['width'];
$str .= "\r\n";
$str.=' | Qual: '.$config['quality'];
$str .= "\n";
$str.=' Size: '.$size;
$str .= "<br />";
$str.=' File: '.$fileName;  
$config['wm_text'] = $str;

在文档中没有提及它,我在这里或谷歌上看不到任何相关内容。这并不重要 - 它只是一个个人项目,但我希望能够做到。

2 个答案:

答案 0 :(得分:1)

如果您查看系统/库中的Image_lib.php类,您会发现它使用imagettftext函数:

imagettftext($src_img, $this->wm_font_size, 0, $x_shad, $y_shad, $drp_color, $this->wm_font_path, $this->wm_text);

$y_shad变量确定所提供的整个文本的垂直偏移量。如果你想要换行,你必须让你的文本变量是一个数组,然后使用foreach循环来增加每一行的垂直偏移量(即数组中的每个项目)。

要实现这一点,您必须彻底改变CI的Image_lib.php类中的text_watermark方法,因为您现在将文本变量作为数组处理,而不是简单的字符串。所以这不是不可能,而是相当乏味,因此很可能不值得努力......

答案 1 :(得分:1)

function imagettfmultilinetext($image, $size, $angle, $x, $y, $color, $fontfile,  $text, $spacing=1)
{
    $lines=explode("\n",$text);
    for($i=0; $i< count($lines); $i++)
    {
        $newY=$y+($i * $size * $spacing);
        imagettftext($image, $size, $angle, $x, $newY, $color, $fontfile,  $lines[$i], $spacing);
    }
    return null;
}