void test_wand()
{
char* inputPath =(char*) "1.png";
char* outputPath =(char*) "11.png";
char* text = (char*) "HELLO WORLD";
MagickWand *magick_wand;
DrawingWand *drawing_wand;
PixelWand *fill_color;
// 初始化 MagickWand
MagickWandGenesis();
// 创建 MagickWand 实例
magick_wand = NewMagickWand();
// 读取输入图片
if (MagickReadImage(magick_wand, inputPath) == MagickFalse) {
//std::cerr << "Failed to read image: " << inputPath << std::endl;
return;
}
// 获取图片的宽高
size_t width = MagickGetImageWidth(magick_wand);
size_t height = MagickGetImageHeight(magick_wand);
// 创建 PixelWand 并设置字体颜色(带透明度,0.3 是透明度,1.0 是不透明)
fill_color = NewPixelWand();
PixelSetColor(fill_color, "rgba(255,0,0,0.3)"); // 白色带透明度
// 创建 DrawingWand 并设置文字属性
drawing_wand = NewDrawingWand();
DrawSetFont(drawing_wand, "Arial");
DrawSetFontSize(drawing_wand, 50);
DrawSetFillColor(drawing_wand, fill_color);
// 设置倾斜角度
DrawSetTextAlignment(drawing_wand, CenterAlign);
DrawRotate(drawing_wand, -30); // 设置倾斜角度,负数表示逆时针
// 在图片上铺满文字
for (size_t y = 0; y < height; y += 100) { // 间隔100像素,可以根据需要调整
for (size_t x = 0; x < width; x += 200) {
DrawAnnotation(drawing_wand, x, y, reinterpret_cast<const unsigned char*>(text));
}
}
// 将文字绘制到图片上
MagickDrawImage(magick_wand, drawing_wand);
// 保存输出图片
if (MagickWriteImages(magick_wand, outputPath, MagickTrue) == MagickFalse) {
//std::cerr << "Failed to write image: " << outputPath << std::endl;
}
// 清理
if (magick_wand) magick_wand = DestroyMagickWand(magick_wand);
if (drawing_wand) drawing_wand = DestroyDrawingWand(drawing_wand);
if (fill_color) fill_color = DestroyPixelWand(fill_color);
// 终止 MagickWand
MagickWandTerminus();
}
04-01
1600
02-05
750