在Ubuntu系统中,使用CxImage库为图片添加水印可以通过以下步骤实现:
sudo apt-get install libcximage-dev
add_watermark.cpp,并引入所需的头文件:#include <iostream>
#include <cximage.h>
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;
}
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;
}
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替换为输出图片文件名。
运行程序后,源图片上将添加水印,并保存为输出图片。