diandiand163 发表于 2021-3-24 13:57:17

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



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

afan 发表于 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)

diandiand163 发表于 2021-3-24 13:58:37

百度API文字识别接口,识别不出来,百度返回数据 {"words_result":[],"log_id":1374599240751251456,"words_result_num":0}
如果用高亮,人眼一眼就能看清的,就没问题

afan 发表于 2021-3-24 14:14:36

可以提取红色接近值像素 替换掉

diandiand163 发表于 2021-3-24 14:17:30

有参考案例吗

afan 发表于 2021-3-24 14:20:48

diandiand163 发表于 2021-3-24 14:23:00

老大,历害啊,用AU3怎么实现,有案例参考不

diandiand163 发表于 2021-3-24 14:27:16

有UDF调用的不?老大,指点下啊

diandiand163 发表于 2021-3-24 14:58:45

代码 中的_GDIPlus_BitmapCreateFromScan0没有定义,哪句是取值,替换颜色啊,老大,我好笨

chishingchan 发表于 2021-3-24 15:07:50

我好奇如果是 透明色 的代码是什么

diandiand163 发表于 2021-3-24 15:14:51

Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)   这句是不是换成这样啊Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH,'Scan0')换了可以运行,但显示的全白,啥也看不到

diandiand163 发表于 2021-3-24 15:18:08

这猜 这代码 是不是把“Scan0 ”字符串写到一张图里啊, 我要的是现有的图,找到颜色 替换掉,给个能用的案例可以不,老大

haijie1223 发表于 2021-3-24 21:57:09

以前也是按照a版的方式处理的,如果不是纯红绿蓝,还需要判断分别哥通道颜色。再就是高分辨率的图片,时间长上可能会长一些,还需要再想办法锁定目标位置。

t87564833 发表于 2021-3-24 22:15:56

敬仰大佬,10几年后到此一游
页: [1]
查看完整版本: 图片纯色文字,怎么做变色处理