设置图片指定坐标集的颜色 - SetPixelList
函数简介
批量设置图片中多个指定坐标点的颜色为新的颜色值。此函数支持ARGB颜色格式,可以一次性设置多个像素点的颜色,比多次调用SetPixel更高效。适用于需要批量修改图片像素的场景。
接口名称
SetPixelList
DLL调用
int SetPixelList(long ola, long image, string points, string color)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。image
(长整型数): OLAImage对象的地址points
(字符串): 坐标集的JSON字符串,格式如下:[ {"x": 0, "y": 0}, {"x": 1, "y": 1}, {"x": 2, "y": 2} ]
color
(字符串): 要设置的颜色值,支持ARGB格式,如"#FFFFFFFF"(带透明度)或"#FFFFFF"(不透明)
示例:
// 加载图片
long image = LoadImage(ola, "image.png");
if (image != 0) {
// 定义要修改的坐标点列表
string points = R"([
{"x": 100, "y": 100},
{"x": 101, "y": 100},
{"x": 102, "y": 100}
])";
// 设置多个坐标点的颜色(不透明)
if (SetPixelList(ola, image, points, "#FF0000")) {
printf("批量设置红色成功\n");
}
// 设置多个坐标点的颜色(带透明度)
if (SetPixelList(ola, image, points, "#80FF0000")) {
printf("批量设置半透明红色成功\n");
}
// 保存修改后的图片
SaveImageFromPtr(ola, image, "result.png");
// 释放内存
FreeImagePtr(ola, image);
}
COM调用
int SetPixelList(long image, string points, string color)
参数定义:
image
(长整型数): OLAImage对象的地址points
(字符串): 坐标集的JSON字符串,格式同DLL调用color
(字符串): 要设置的颜色值,支持ARGB格式,如"#FFFFFFFF"(带透明度)或"#FFFFFF"(不透明)
示例:
# 加载图片
image = ola.LoadImage("image.png")
if image:
# 定义要修改的坐标点列表
points = '''[
{"x": 100, "y": 100},
{"x": 101, "y": 100},
{"x": 102, "y": 100}
]'''
# 设置多个坐标点的颜色(不透明)
if ola.SetPixelList(image, points, "#FF0000"):
print("批量设置红色成功")
# 设置多个坐标点的颜色(带透明度)
if ola.SetPixelList(image, points, "#80FF0000"):
print("批量设置半透明红色成功")
# 保存修改后的图片
ola.SaveImageFromPtr(image, "result.png")
# 释放内存
ola.FreeImagePtr(image)
返回值
整型数:
- 1: 成功设置颜色
- 0: 设置失败
注意事项
- 颜色值支持两种格式:
- 不透明颜色:6位十六进制,如"#FFFFFF"
- 带透明度颜色:8位十六进制,如"#FFFFFFFF"(前两位为透明度)
- 所有坐标点必须在图片的有效范围内
- 原始图片会被直接修改
- 使用完毕后必须调用 FreeImagePtr 释放内存
- 建议在使用前检查图片指针和坐标的有效性
- 处理大量坐标点时注意性能影响
- 如果只需要修改单个像素,建议使用 SetPixel 函数
- 颜色值不区分大小写
- 建议在修改前保存原始图片的备份
- 修改后的图片需要重新保存才能永久保存更改
- JSON字符串中的坐标点数量没有限制,但建议控制在一个合理的范围内
- 如果坐标点列表为空,函数将返回成功但不进行任何修改