OLA 文档中心OLA 文档中心
OLA插件文档
OLA授权中心文档
OLA支付中心文档
OLA插件文档
OLA授权中心文档
OLA支付中心文档
  • 欧拉插件
  • 窗口

    • 绑定窗口 - BindWindow
    • 绑定窗口高级 - BindWindowEx
    • 解绑窗口 - UnBindWindow
    • 强制卸载DLL - ReleaseWindowsDll
    • 查看绑定窗口 - GetBindWindow
    • 查找窗口 - FindWindow
    • 拓展找窗口 - FindWindowEx
    • 通过进程找窗口 - FindWindowByProcess
    • 通过进程找窗口 - FindWindowByProcessId
    • 获取窗口 - GetWindow
    • 获取焦点窗口 - GetForegroundFocus
    • 获取坐标所在窗口句柄 - GetPointWindow
    • 获取顶层窗口句柄 - GetForegroundWindow
    • 获取鼠标所在窗口句柄 - GetMousePointWindow
    • 获取特殊窗口 - GetSpecialWindow
    • 枚举进程 - EnumProcess
    • 枚举窗口 - EnumWindow
    • 枚举进程窗口 - EnumWindowByProcessId
    • 枚举进程窗口 - EnumWindowByProcess
    • 枚举特殊窗口 - EnumWindowSuper
    • 查找特殊窗口 - FindWindowSuper
    • 获取线程ID - GetWindowThreadId
    • 获取进程ID - GetWindowProcessId
    • 移动窗口 - MoveWindow
    • 窗口坐标转屏幕坐标 - ClientToScreen
    • 屏幕坐标转窗口坐标 - ScreenToClient
    • 获取绑定窗口缩放比例 - GetScaleFromWindows
    • 获取窗口DPI感知比例 - GetWindowDpiAwarenessScale
    • 获取客户区大小 - GetClientSize
    • 获取窗口标题 - GetWindowTitle
    • 获取窗口类名 - GetWindowClass
    • 获取窗口区域 - GetWindowRect
    • 获取窗口所在路径 - GetWindowProcessPath
    • 获取窗口状态 - GetWindowState
    • 获取客户区域 - GetClientRect
    • 设置窗口标题 - SetWindowText
    • 设置窗口大小 - SetWindowSize
    • 设置窗口状态 - SetWindowState
    • 设置剪贴板 - SetClipboard
    • 设置客户区大小 - SetClientSize
    • 设置透明度 - SetWindowTransparent
    • 获取进程详细信息 - GetProcessInfo
    • 发送剪贴板内容 - SendPaste
    • 获取剪贴板内容 - GetClipboard
    • 发送字符串 - SendString
  • 鼠标

    • 范围鼠标移动 - MoveToEx
    • 获取鼠标特征码 - GetCursorShape
    • 获取鼠标图标 - GetCursorImage
    • 获取鼠标位置 - GetCursorPos
    • 相对移动 - MoveR
    • 移动 - MoveTo
    • 直接移动 - MoveToWithoutSimulator
    • 左键按下 - LeftDown
    • 左键弹起 - LeftUp
    • 左键点击 - LeftClick
    • 左键双击 - LeftDoubleClick
    • 右键按下 - RightDown
    • 右键弹起 - RightUp
    • 右键点击 - RightClick
    • 中键按下 - MiddleDown
    • 中键弹起 - MiddleUp
    • 中键点击 - MiddleClick
    • 中键上滚 - WheelUp
    • 中键下滚 - WheelDown
    • 生成鼠标移动轨迹 - GenerateMouseTrajectory
    • 设置系统鼠标精度 - EnableMouseAccuracy
  • 键盘

    • 按键 - KeyPress
    • 按键char - KeyPressChar
    • 按键str - KeyPressStr
    • 等待按键 - WaitKey
    • 键盘按住 - KeyDown
    • 键盘按住char - KeyDownChar
    • 键盘弹起 - KeyUp
    • 键盘弹起char - KeyUpChar
  • 图像处理

    • 截图并保存成文件 - Capture
    • 截图GIF - CaptureGif
    • 截图返回字节流 - GetScreenDataBmp
    • 截图返回字节流 - GetScreenData
    • 获取指定区域图象 - GetScreenDataPtr
    • 加载图片 - LoadImage
    • 加载图片 - LoadImageFromRGBData
    • 载入bmp图片 - LoadImageFromBmpData
    • 加载文件夹下的所有图片 - LoadImagePath(已弃用)
    • 保存图片 - SaveImageFromPtr
    • 拷贝图片 - CopyImage
    • 读取图片字节流 - GetImageData
    • 读取图片BMP字节流 - GetImageBmpData
    • 释放指定图片路径内存 - FreeImagePath
    • 释放所有内存 - FreeImageAll
    • 释放指定图片内存 - FreeImagePtr
    • 释放指定图片内存1 - FreeImageData
    • 裁剪图片 - Cropped
    • 获取图片大小 - GetImageSize
    • 调整图片大小 - ReSize
    • 调整图片大小 - ScalePixels
    • 弹窗显示图片 - ShowImage
    • 获取指定区域刷新率 - GetWindowsFps
    • 指定区域数据是否卡屏 - IsDisplayDead
    • 取色 - GetColor
    • 获取像素颜色 - GetColorPtr
    • RGB颜色转为16进制格式 - ARGB2Hex
    • RGB颜色转为16进制格式 - RGB2Hex
    • 16进制格式颜色转为ARGB - Hex2ARGB
    • 16进制格式颜色转为RGB - Hex2RGB
    • 对比颜色 - CmpColor
    • 对比颜色 - CmpColorPtr
    • 对比颜色 - CmpColorHex
    • 查找符合的颜色 - FindColor
    • 查找所有符合的颜色 - FindColorList
    • 查找指定颜色范围坐标 - FindMultiColor
    • 查找指定颜色范围坐标 - FindMultiColorFromPtr
    • 查找指定颜色范围坐标 - FindMultiColorList
    • 查找指定颜色范围坐标 - FindMultiColorListFromPtr
    • 查找指定区域内的颜色块 - FindColorBlock
    • 查找指定区域内的颜色块 - FindColorBlockPtr
    • 查找指定区域内的所有颜色块 - FindColorBlockList
    • 查找指定区域内的所有颜色块 - FindColorBlockListPtr
    • 设置指定颜色为新的颜色 - SetColorsToNewColor
    • 移除除指定颜色外的所有颜色 - RemoveOtherColors
    • 获取二值化图像 - GetThresholdImageFromMultiColorPtr
    • 获取指定区域二值化图像 -GetThresholdImageFromMultiColor
    • 获取指定颜色数量 - GetColorNum
    • 获取指定颜色数量 - GetColorNumPtr
    • 移除图片差异部分 - RemoveImageDiff
    • 生成二维码 - CreateQRCode
    • 解析二维码 - DecodeQRCode
    • 创建图片 - CreateImage
    • 设置图片指定坐标的颜色 - SetPixel
    • 设置图片指定坐标集的颜色 - SetPixelList
    • 拼接图片 - ConcatImage
    • 图片转为base64字符串 - ImageToBase64
    • base64字符串转为图片 - Base64ToImage
    • 旋转图片 - RotateImage
    • 覆盖图片 - CoverImage
    • 绘制圆形 - DrawCircle
    • 绘制矩形 - DrawRectangle
    • 绘制多边形 - DrawFillPoly
    • 坐标点排序 - SortPosDistance
    • 识别图片排除指定区域 - ExcludePos
    • 查找最近坐标点 - FindNearestPos
  • 图像识别

    • 匹配绑定窗口图片 - MatchWindowsFromPathAll
    • 匹配绑定窗口图片1 - MatchWindowsFromPtr
    • 匹配绑定窗口图片2 - MatchWindowsFromPtrAll
    • 匹配绑定窗口图片3 - MatchWindowsFromPath
    • 匹配绑定窗口图片4 - MatchWindowsThresholdFromPtr
    • 匹配绑定窗口图片5 - MatchWindowsThresholdFromPtrAll
    • 匹配绑定窗口图片6 - MatchWindowsThresholdFromPath
    • 匹配绑定窗口图片7 - MatchWindowsThresholdFromPathAll
    • 匹配图片 - MatchImageFromPathAll
    • 匹配图片1 - MatchImageFromPath
    • 匹配图片2 - MatchImageFromPtrAll
    • 匹配图片3 - MatchImageFromPtr
    • 匹配图片4 - MatchImagePtrFromPath
    • 匹配图片5 - MatchImagePtrFromPathAll
    • 匹配动画窗口 - MatchAnimationFromPath
    • 匹配动画窗口1 - MatchAnimationFromPtr
    • 图片比较-结构相似性指数 - CalculateSSIM
    • 图片比较-完整比较 - IsSameImage
    • 图片比较-直方图比较 - CalculateHistograms
    • 图片比较-均方误差 - CalculateMSE
    • 是否显示匹配结果弹窗 - ShowMatchWindow
  • 文字识别

    • 指定区域识字 - Ocr
    • 指定bmp图片识字 - OcrFromBmpData
    • 指定区域详细信息- OcrDetails
    • 指定图片识字 - OcrFromPtr
    • 指定bmp图片详细信息 - OcrFromBmpDataDetails
    • 指定图片详细信息 - OcrFromPtrDetails
  • 数据库

    • 打开数据库 - OpenDatabase
    • 读取错误信息 - GetDatabaseError
    • 关闭数据库 - CloseDatabase
    • 读取所有表名 - GetAllTableNames
    • 读取表结构信息 - GetTableInfo
    • 读取表结构详细信息 - GetTableInfoDetail
    • 执行SQL - ExecuteSql
    • 执行快速查询 - ExecuteScalar
    • 执行查询 - ExecuteReader
    • 读取游标 - Read
    • 读取查询结果的数量 - GetDataCount
    • 读取列数量 - GetColumnCount
    • 读取列名称 - GetColumnName
    • 读取列索引 - GetColumnIndex
    • 读取列类型 - GetColumnType
    • 销毁STMT对象 - Finalize
    • 读取double数据 - GetDouble
    • 读取int32数据 - GetInt32
    • 读取int64数据 - GetInt64
    • 读取string数据 - GetString
    • 读取double数据 - GetDoubleByColumnName
    • 读取int数据 - GetInt32ByColumnName
    • 读取long数据 - GetInt64ByColumnName
    • 读取string数据 - GetStringByColumnName
  • 图像数据库

    • 加载字库图片 - InitDictFromDir
    • 添加字库数据 - ImportDictWord
    • 导出字库数据 - ExportDict
    • 移除字库 - RemoveDict
    • 移除词典词条 - RemoveDictWord
    • 读取字库图片 - GetDictImage
    • 查找文字 - FindStr
    • 初始化OLA数据库 - InitOlaDatabase
    • 从目录初始化OLA图像 - InitOlaImageFromDir
    • 从目录移除OLA图像 - RemoveOlaImageFromDir
    • 导出OLA图像到目录 - ExportOlaImageDir
    • 导入OLA图像 - ImportOlaImage
    • 获取OLA图像 - GetOlaImage
    • 移除OLA图像 - RemoveOlaImage
  • Config相关

    • 读取数据库配置项 - GetDbConfig
    • 设置数据库配置 - SetDbConfig
    • 移除数据库配置项 - RemoveDbConfig
    • 读取数据库配置项 - GetDbConfigEx
    • 设置数据库配置 - SetDbConfigEx
    • 移除数据库配置项 - RemoveDbConfigEx
  • 高级版功能

    • AI

      • YOLO
    • 防护盾

  • 快捷键

    • 启动快捷键监听 - StartHotkeyHook
    • 停止快捷键监听 - StopHotkeyHook
    • 注册键盘快捷键 - RegisterHotkey
    • 卸载键盘快捷键 - UnregisterHotkey
    • 注册鼠标点击快捷键 - RegisterMouseButton
    • 卸载鼠标点击快捷键 - UnregisterMouseButton
    • 注册鼠标滚轮快捷键 - RegisterMouseWheel
    • 卸载鼠标滚轮快捷键 - UnregisterMouseWheel
    • 注册鼠标移动快捷键 - RegisterMouseMove
    • 卸载鼠标移动快捷键 - UnregisterMouseMove
    • 注册鼠标拖动快捷键 - RegisterMouseDrag
    • 卸载鼠标拖动快捷键 - UnregisterMouseDrag
  • 设置

    • 版本 - Ver
    • 获取插件路径 - GetBasePath
    • 获取机器码 - GetMachineCode
    • 获取全局路径 - GetPath
    • 设置全局路径 - SetPath
    • 读取用户自定义设置 - GetConfig
    • 修改用户自定义设置 - SetConfig
    • 修改用户自定义设置 - SetConfigByKey
  • 其他

    • 注册到后台 - Reg
    • 创建OLA对象
    • 释放OLA对象 - DestroyCOLAPlugInterFace
    • 释放字符串内存 - FreeStringPtr
    • 读取字符串大小 - GetStringSize
    • 从内存地址读取字符串 - GetStringFromPtr
    • 执行cmd指令 - ExecuteCmd
  • 系统

    • 控制窗口任务栏图标 - ShowTaskBarIcon
    • 检测UAC状态 - CheckUAC
    • 设置UAC状态 - SetUAC
    • 运行指定程序 - RunApp
    • 延时指定毫秒 - Delay
    • 延时指定随机时间 - Delays
    • 拖动文件到窗口 - SendDropFiles

设置指定颜色为新的颜色 - SetColorsToNewColor

函数简介

将图片中指定的颜色替换为新的颜色。此函数可以批量修改图片中所有匹配指定颜色的像素点,支持颜色范围匹配和精确匹配。常用于图片颜色替换、背景色修改、主题色更改等场景。可以同时替换多个颜色。

接口名称

SetColorsToNewColor

DLL调用

int SetColorsToNewColor(long ola, long image_ptr, string old_colors, string new_colors, int similarity)

参数定义:

  • ola (长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
  • image_ptr (长整型数): 要修改的图片句柄。
  • old_colors (字符串): 要替换的原始颜色列表,格式为"color1|color2|color3...",每个颜色为6位十六进制RGB值。
  • new_colors (字符串): 替换后的新颜色列表,格式同old_colors,必须与old_colors数量相同。
  • similarity (整型数): 颜色匹配的相似度阈值,范围0-255。0表示完全匹配,值越大表示匹配范围越宽松。

示例:

// 替换单个颜色示例
void ReplaceColorExample() {
    long image = LoadImage(ola, "D:\\test\\source.png");
    if (image != 0) {
        // 将红色(FF0000)替换为蓝色(0000FF)
        int ret = SetColorsToNewColor(ola, image, "FF0000", "0000FF", 10);
        if (ret == 1) {
            printf("颜色替换成功\n");
            SaveImageFromPtr(ola, image, "D:\\test\\replaced.png");
        }
        FreeImagePtr(ola, image);
    }
}

// 替换多个颜色示例
void ReplaceMultipleColorsExample() {
    long image = LoadImage(ola, "D:\\test\\source.png");
    if (image != 0) {
        // 同时替换多个颜色:
        // 红色(FF0000) -> 蓝色(0000FF)
        // 绿色(00FF00) -> 黄色(FFFF00)
        // 白色(FFFFFF) -> 灰色(808080)
        const char* old_colors = "FF0000|00FF00|FFFFFF";
        const char* new_colors = "0000FF|FFFF00|808080";
        
        int ret = SetColorsToNewColor(ola, image, old_colors, new_colors, 20);
        if (ret == 1) {
            printf("多个颜色替换成功\n");
            SaveImageFromPtr(ola, image, "D:\\test\\multi_replaced.png");
        }
        FreeImagePtr(ola, image);
    }
}

// 替换背景色示例
void ReplaceBackgroundExample() {
    long image = LoadImage(ola, "D:\\test\\source.png");
    if (image != 0) {
        // 获取左上角的颜色作为背景色
        int bg_color = GetColorPtr(ola, image, 0, 0);
        
        // 将背景色转换为十六进制字符串
        char old_color[7];
        sprintf(old_color, "%06X", bg_color & 0xFFFFFF);
        
        // 替换为新的背景色(例如:浅蓝色)
        int ret = SetColorsToNewColor(ola, image, old_color, "E0F0FF", 30);
        if (ret == 1) {
            printf("背景色替换成功\n");
            SaveImageFromPtr(ola, image, "D:\\test\\new_background.png");
        }
        FreeImagePtr(ola, image);
    }
}

// 创建主题色变体
void CreateColorVariantsExample() {
    long image = CreateImage(ola, 200, 200);
    if (image != 0) {
        // 填充原始颜色
        for (int y = 0; y < 200; y++) {
            for (int x = 0; x < 200; x++) {
                SetPixel(ola, image, x, y, 0x4CAF50);  // Material Design 绿色
            }
        }
        
        // 创建不同主题色的变体
        const char* themes[] = {
            "4CAF50",  // 原始绿色
            "2196F3",  // 蓝色
            "F44336",  // 红色
            "9C27B0",  // 紫色
            "FF9800"   // 橙色
        };
        
        for (int i = 1; i < 5; i++) {
            long variant = CopyImage(ola, image);
            if (variant != 0) {
                SetColorsToNewColor(ola, variant, themes[0], themes[i], 0);
                
                char filename[256];
                sprintf(filename, "D:\\test\\theme_%s.png", themes[i]);
                SaveImageFromPtr(ola, variant, filename);
                FreeImagePtr(ola, variant);
            }
        }
        
        FreeImagePtr(ola, image);
    }
}

COM调用

int SetColorsToNewColor(long image_ptr, string old_colors, string new_colors, int similarity)

参数定义:

  • image_ptr (长整型数): 要修改的图片句柄。
  • old_colors (字符串): 要替换的原始颜色列表,格式为"color1|color2|color3...",每个颜色为6位十六进制RGB值。
  • new_colors (字符串): 替换后的新颜色列表,格式同old_colors,必须与old_colors数量相同。
  • similarity (整型数): 颜色匹配的相似度阈值,范围0-255。0表示完全匹配,值越大表示匹配范围越宽松。

示例:

# 替换单个颜色示例
def replace_color_example():
    image = ola.LoadImage("D:\\test\\source.png")
    if image != 0:
        # 将红色(FF0000)替换为蓝色(0000FF)
        if ola.SetColorsToNewColor(image, "FF0000", "0000FF", 10) == 1:
            messagebox("颜色替换成功")
            ola.SaveImageFromPtr(image, "D:\\test\\replaced.png")
        ola.FreeImagePtr(image)

# 替换多个颜色示例
def replace_multiple_colors_example():
    image = ola.LoadImage("D:\\test\\source.png")
    if image != 0:
        # 同时替换多个颜色
        old_colors = "FF0000|00FF00|FFFFFF"  # 红色、绿色、白色
        new_colors = "0000FF|FFFF00|808080"  # 蓝色、黄色、灰色
        
        if ola.SetColorsToNewColor(image, old_colors, new_colors, 20) == 1:
            messagebox("多个颜色替换成功")
            ola.SaveImageFromPtr(image, "D:\\test\\multi_replaced.png")
        ola.FreeImagePtr(image)

# 替换背景色示例
def replace_background_example():
    image = ola.LoadImage("D:\\test\\source.png")
    if image != 0:
        # 获取左上角的颜色作为背景色
        bg_color = ola.GetColorPtr(image, 0, 0)
        
        # 将背景色转换为十六进制字符串
        old_color = f"{bg_color & 0xFFFFFF:06X}"
        
        # 替换为新的背景色(浅蓝色)
        if ola.SetColorsToNewColor(image, old_color, "E0F0FF", 30) == 1:
            messagebox("背景色替换成功")
            ola.SaveImageFromPtr(image, "D:\\test\\new_background.png")
        ola.FreeImagePtr(image)

# 创建主题色变体
def create_color_variants_example():
    image = ola.CreateImage(200, 200)
    if image != 0:
        # 填充原始颜色
        for y in range(200):
            for x in range(200):
                ola.SetPixel(image, x, y, 0x4CAF50)  # Material Design 绿色
        
        # 创建不同主题色的变体
        themes = [
            "4CAF50",  # 原始绿色
            "2196F3",  # 蓝色
            "F44336",  # 红色
            "9C27B0",  # 紫色
            "FF9800"   # 橙色
        ]
        
        for i in range(1, 5):
            variant = ola.CopyImage(image)
            if variant != 0:
                ola.SetColorsToNewColor(variant, themes[0], themes[i], 0)
                ola.SaveImageFromPtr(variant, f"D:\\test\\theme_{themes[i]}.png")
                ola.FreeImagePtr(variant)
        
        ola.FreeImagePtr(image)

# 调用示例函数
replace_color_example()
replace_multiple_colors_example()
replace_background_example()
create_color_variants_example()

返回值

整型数:

  • 0: 替换失败
  • 1: 替换成功

注意事项

  1. 颜色值使用6位十六进制RGB格式,不包含透明度信息
  2. 原始颜色列表和新颜色列表的数量必须相同
  3. 相似度值越大,匹配的颜色范围越广,但可能会影响不需要替换的颜色
  4. 对于精确的颜色替换,建议将相似度设为0
  5. 处理大图片时,较大的相似度值可能会显著增加处理时间
Last Updated:
Prev
查找指定区域内的所有颜色块 - FindColorBlockListPtr
Next
移除除指定颜色外的所有颜色 - RemoveOtherColors