首页 > 解决方案 > 如何使用 Codeigniter ImageMagick 一次放置多个水印文本

问题描述

我们正在使用 codeigniter ImageMagick 库进行图像处理和生成,其中一些动态文本位于原始图像的不同位置。

这是水印的示例部分脚本 -

$config['image_library']    = 'imagemagick'; //default value
$config['wm_type']          = 'text';
$config['wm_font_path']     = './system/fonts/SourceSansPro-Regular.ttf';
$config['wm_font_size']     = 20;
$config['wm_font_color']    = '#0000';
$config['wm_x_transp']      = 4;
$config['wm_y_transp']      = 4;
$config['wm_vrt_alignment'] = 'T';
$config['wm_hor_alignment'] = 'L';
############

## To place repoter name ($rep_Name)
$config['source_image']     = $jpg_image_output_path; //get original image
$config['wm_text']          = $rep_Name;
$config['wm_hor_offset']    = 100;
$config['wm_vrt_offset']    = 610;
$this->image_lib->initialize($config);
if (!$this->image_lib->watermark()) {
    echo $this->image_lib->display_errors();
}

## To place repoter address ($rep_Address)
$config['source_image']     = $jpg_image_output_path; //get original image
$config['wm_text']          = $rep_Address;
$config['wm_hor_offset']    = 100;
$config['wm_vrt_offset']    = 640;
$this->image_lib->initialize($config);
if (!$this->image_lib->watermark()) {
    echo $this->image_lib->display_errors();
}


## To place reporter telephone ($rep_Telephone)
$config['source_image']     = $jpg_image_output_path; //get original image
$config['wm_text']          = $rep_Telephone;
$config['wm_hor_offset']    = 385;
$config['wm_vrt_offset']    = 640;
$this->image_lib->initialize($config);
if (!$this->image_lib->watermark()) {
    echo $this->image_lib->display_errors();
}

...
...

还有更多像上面这样的大约 50+ 将不同的水印文本放置在不同的偏移位置。

它工作正常,但问题是系统需要很长时间才能单独执行带有 50 多个水印的完整脚本。每次系统触发 $this->image_lib->initialize($config) 和 $this->image_lib->watermark() 都需要时间。

有没有办法一次执行所有水印。假设我将传递一个包含文本和偏移值的数组并初始化,水印将触发一次?

请帮忙。

标签: codeigniterimagemagickimagemagick-convert

解决方案


推荐阅读