首页 > 解决方案 > 水印函数返回true但图像没有被修改

问题描述

我要做的就是在上传时给图片加水印。虽然水印函数返回TRUE的图像没有被修改。

这是我编写的函数,即使尝试并捕获它也不起作用:

 public function product_small_image_upload($path, $folder)
{

    try {
        $image = new ImageResize($path);
        $image->quality_jpg = 85;
        $image->resizeToHeight(300);
        $new_name = 'img_x300_' . generate_unique_id() . '.jpg';
        $new_path = 'uploads/' . $folder . '/' . $new_name;

        $imgConfig = array();

        $imgConfig['image_library']   = 'GD2';

        $imgConfig['source_image']    = $new_path;

        $imgConfig['wm_text']         = 'Copyright 2019';

        $imgConfig['wm_type']         = 'text';

        $imgConfig['wm_font_size']    = '16';

        $this->load->library('image_lib', $imgConfig);

        $this->image_lib->initialize($imgConfig);

        $this->image_lib->watermark(); 

        $image->save(FCPATH . $new_path, IMAGETYPE_JPEG);

        return $new_name;
    } catch (ImageResizeException $e) {
        return null;
    }
}

标签: phpcodeigniter

解决方案


首先添加 $new_path = FCPATH 。“上传/”。$文件夹。'/' 。$新名称;

您不需要使用 $imgConfig['image_library'],也没有使用水印对齐。

为什么不使用这样的正确方法:

$config['source_image'] = $new_path;
$config['wm_text'] = 'Copyright 2019';
$config['wm_type'] = 'text';
$config['wm_font_path'] = './system/fonts/texb.ttf';
$config['wm_font_size'] = '8';
$config['wm_font_color'] = '000000';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'right';

使用此代码,您将获得水印,只需选择您想要的文本颜色


推荐阅读