ubuntu

Ubuntu中CxImage如何添加水印

小樊
44
2025-12-30 09:40:53
栏目: 智能运维

在Ubuntu系统中,使用CxImage库为图片添加水印可以通过以下步骤实现:

  1. 首先确保已经安装了CxImage库。如果尚未安装,可以通过以下命令安装:
sudo apt-get install libcximage-dev
  1. 创建一个C++文件,例如add_watermark.cpp,并引入所需的头文件:
#include <iostream>
#include <cximage.h>
  1. 编写一个函数,用于将水印添加到图片上:
bool add_watermark(const char* src_image_path, const char* watermark_image_path, const char* output_image_path) {
    // 加载源图片和水印图片
    CXImage src_image, watermark_image;
    if (!src_image.Load(src_image_path) || !watermark_image.Load(watermark_image_path)) {
        std::cerr << "Error loading images." << std::endl;
        return false;
    }

    // 设置水印透明度
    watermark_image.SetBkColor(RGB(255, 255, 255));
    watermark_image.AlphaBlend(128);

    // 将水印添加到源图片上
    if (!src_image.Blit(watermark_image, 0, 0, CXIMAGE_BLIT_DEFAULT)) {
        std::cerr << "Error adding watermark." << std::endl;
        return false;
    }

    // 保存输出图片
    if (!src_image.Save(output_image_path)) {
        std::cerr << "Error saving output image." << std::endl;
        return false;
    }

    return true;
}
  1. main函数中调用add_watermark函数:
int main(int argc, char* argv[]) {
    if (argc != 4) {
        std::cerr << "Usage: " << argv[0]<< " <source_image> <watermark_image> <output_image>" << std::endl;
        return 1;
    }

    const char* src_image_path = argv[1];
    const char* watermark_image_path = argv[2];
    const char* output_image_path = argv[3];

    if (add_watermark(src_image_path, watermark_image_path, output_image_path)) {
        std::cout << "Watermark added successfully." << std::endl;
    } else {
        std::cerr << "Failed to add watermark." << std::endl;
        return 1;
    }

    return 0;
}
  1. 编译并运行程序:
g++ add_watermark.cpp -o add_watermark `pkg-config --cflags --libs cximage`
./add_watermark input_image.jpg watermark.png output_image.jpg

input_image.jpg替换为源图片文件名,watermark.png替换为水印图片文件名,output_image.jpg替换为输出图片文件名。

运行程序后,源图片上将添加水印,并保存为输出图片。

0
看了该问题的人还看了