找回密码
 加入
搜索
查看: 1900|回复: 13

[图形处理] 图片纯色文字,怎么做变色处理

[复制链接]
发表于 2021-3-24 13:57:17 | 显示全部楼层 |阅读模式


上面显示的时间暗红色,看不清啊,怎么反向白色?或换种亮色

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-3-24 14:32:05 | 显示全部楼层
#include <GDIPlus.au3>

Local $sFile = 'test.jpg'

_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
If @error Then Exit

Local $iW = _GDIPlus_ImageGetWidth($hImage)
Local $iH = _GDIPlus_ImageGetHeight($hImage)
Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsDrawImageRect($hContext, $hImage, 0, 0, $iW, $iH)

Local $tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iW, $iH, BitOR($GDIP_ILMWRITE, $GDIP_ILMREAD), $GDIP_PXF32ARGB)
Local $iScan0 = DllStructGetData($tBitmapData, 'Scan0')
Local $tPixel = DllStructCreate('int[' & $iW * $iH & ']', $iScan0)
Local $iY, $iX, $iPixel, $iRowOffset, $iR
For $iY = 0 To $iH - 1
        $iRowOffset = $iY * $iW + 1
        For $iX = 0 To $iW - 1
                $iPixel = DllStructGetData($tPixel, 1, $iRowOffset + $iX)
                $iR = BitShift(BitAND($iPixel, 0x00FF0000), 16)
                If $iR > 0x7D Then DllStructSetData($tPixel, 1, 0xFFFFFFFF, $iRowOffset + $iX)
        Next
Next
_GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)

Local $hGUI = GUICreate('', $iW, $iH)
GUISetState()
Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW, $iH)

Do
Until GUIGetMsg() = -3

_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hContext)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
GUIDelete($hGUI)

评分

参与人数 2金钱 +80 收起 理由
guoguo188 + 20 很给力!学习了,谢谢
gapkiller + 60 赞一个! 学习了!

查看全部评分

 楼主| 发表于 2021-3-24 13:58:37 | 显示全部楼层
百度API文字识别接口,识别不出来,百度返回数据 {"words_result":[],"log_id":1374599240751251456,"words_result_num":0}
如果用高亮,人眼一眼就能看清的,就没问题
发表于 2021-3-24 14:14:36 | 显示全部楼层
可以提取红色接近值像素 替换掉
 楼主| 发表于 2021-3-24 14:17:30 | 显示全部楼层
有参考案例吗
发表于 2021-3-24 14:20:48 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2021-3-24 14:23:00 | 显示全部楼层
老大,历害啊,用AU3怎么实现,有案例参考不
 楼主| 发表于 2021-3-24 14:27:16 | 显示全部楼层
有UDF调用的不?老大,指点下啊
 楼主| 发表于 2021-3-24 14:58:45 | 显示全部楼层
代码 中的  _GDIPlus_BitmapCreateFromScan0  没有定义,哪句是取值,替换颜色啊,老大,我好笨
发表于 2021-3-24 15:07:50 | 显示全部楼层
我好奇如果是 透明色 的代码是什么
 楼主| 发表于 2021-3-24 15:14:51 | 显示全部楼层
Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)   这句是不是换成这样啊  Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics  ($iW, $iH,'Scan0')  换了可以运行,但显示的全白,啥也看不到
 楼主| 发表于 2021-3-24 15:18:08 | 显示全部楼层
  这猜 这代码 是不是把  “Scan0 ”字符串写到一张图里啊, 我要的是现有的图,找到颜色 替换掉,给个能用的案例可以不,老大
发表于 2021-3-24 21:57:09 | 显示全部楼层
以前也是按照a版的方式处理的,如果不是纯红绿蓝,还需要判断分别哥通道颜色。再就是高分辨率的图片,时间长上可能会长一些,还需要再想办法锁定目标位置。
发表于 2021-3-24 22:15:56 | 显示全部楼层
敬仰大佬,10几年后到此一游
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:09 , Processed in 0.085653 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表