admin管理员组

文章数量:1531513

2024年1月9日发(作者:)

include 3gt include 3gt include 3gt

InetGetquot/t1 Global

TempNum0 Global FirstNum0 Global SecondNum0 Global ThirdNum0 Global

FourthNum0 Global CodeNumquotquot Global Line1 Global Line2 Global Line22

Global Line3 Global Line33 Global Line4 Global Line44 Global Line5 Global Line55

Global Line6 Global Line66 Global Line7 Global Line77 Global Line8 Global Line88

Global Line9 Global Line99 Global Line10 Global Line102 Global Line11 Global

Line112 Global Line12 Global ZeroNums12quotquot Global

ZeroNums18quot000000quot Global

ZeroNums24quotquot Global

ZeroNums36quotquot Global

ZeroNums48quotquot Global

aRecords Global aRray12 Global Row0 数组列数 Global Cro0 行数

_ArrayDisplaya_Imagequot处理后的数组一维数组quot Func

myArrayChangeSCfunc_array func_sc_type0 func_sc0x777777 func_bg0xffffff数组中的颜色值做黑白变化 If Not IsArrayfunc_array Or func_sc_typelt1 Or func_sc_typegt3

Or func_sc_type0 Then Return func_array If UBoundfunc_array2gt0 Then二维 Local

i_widthUBoundfunc_array1 Local i_heightUBoundfunc_array2 Local

a_returni_widthi_height x y s For y0 To i_height-1 For x 0 To i_width-1 a_returnxy

func_arrayxy Select Case func_sc_type1黑白 If a_returnxygtfunc_sc Then

a_returnxyfunc_bg Else a_returnxy0 EndIf Case func_sc_type2反相黑白 If

a_returnxyltfunc_sc Then a_returnxyfunc_bg Else a_returnxy0 EndIf Case

func_sc_type3相当于1但黑色用原色代替就是保留原色 If a_returnxygtfunc_sc Then

a_returnxyfunc_bg EndIf EndSelect Next Next Else Local i_heightUBoundfunc_array

Local a_returni_height y For y0 To i_height-1 a_returny

myChangeRegExpSCfunc_arrayy func_sc_type func_sc func_bg正则变化 Next EndIf

Return a_return EndFunc 以下三龊际枪﹎yArrayChangeSC使用的不做详细介绍了 Func myChangeRegExpSCfunc_string func_sc_type0 func_sc0xeeeeee

func_bg0xffffff将串做黑白变化 If func_stringquotquot Or func_sc_typelt1 Or

func_sc_typegt3 Or ModStringLenfunc_string6ltgt0 Then Return func_string func_string

StringRegExpReplacefunc_string quot.6quot quot0quot func_sc

myGetRegExpSCfunc_sc ConsoleWritefunc_scampCRLF func_string

StringRegExpReplacefunc_stringfunc_scquot______quot Select Case func_sc_type1

func_string StringRegExpReplacefunc_stringquot0-9A-F6quotquot000000quot

func_string StringReplacefunc_stringquot______quotHexfunc_bg6 Case

func_sc_type2 func_string

StringRegExpReplacefunc_stringquot0-9A-F6quotHexfunc_bg6 func_string

StringReplacefunc_stringquot______quotquot000000quot Case func_sc_type3

func_string StringReplacefunc_stringquot______quotHexfunc_bg6 func_string

StringReplacefunc_stringquotquot quotquot EndSelect Return func_string EndFunc Func

myGetRegExpSCfunc_sc0x777777获取变化黑白临界值的正则表达式供myChangeRegExpSC调用 func_scHexfunc_sc6 Local iss_RegExp For i1 To 6

sStringLeftfunc_sci If StringRights1ltgtquotFquot Then Select Case i6 s_RegExp amp

myRegExpStringLefts5 amp myRegExpStringRights1 Case i5 s_RegExp

ampmyRegExpHexNumberquot0xquotamps1iampquot0-9A-Fquot Case Else s_RegExp

ampmyRegExpHexNumberquot0xquotamps1i amp quot0-9A-Fquotamp6-iampquotquot

EndSelect EndIf Next If StringRights_RegExp1quotquot Then

s_RegExpStringTrimRights_RegExp1 Return s_RegExp EndFunc Func

myRegExpfunc_string供myGetRegExpSC调用单字符转正则 If func_stringquotquot

Then Return quotquot Local s_RegExpquotquot s_tmpquotquot For i1 To

StringLenfunc_string s_tmpNumberquot0xquotampStringMidfunc_string i1 Select Case

s_tmplt9 s_RegExp ampquotquotamps_tmp ampquot-9A-Fquot Case s_tmp9 s_RegExp

ampquot9A-Fquot Case s_tmp0xF s_RegExp ampquotFquot Case Else s_RegExp

ampquotquotampHexs_tmp1ampquot-Fquot EndSelect Next Return s_RegExp EndFunc

以下为前面已经说明过的函数将图形文件读入二维数组

----------------------------------------------------------------------------------------------- Func

myReadImageToArrays_ImageFile b_Array2dFalse成功则返回数组.失败返回0.b_Array2dTrue返回二维数组False返回一维数组 Local hBitmap BitmapData i_width

i_height Scan0 pixelData s_BMPData i_Stride _GDIPlus_Startup hBitmap

_GDIPlus_BitmapCreateFromFiles_ImageFile If error Then _GDIPlus_ShutDown

Return 0无效的图形文件或未找到该文件 EndIf i_width

_GDIPlus_ImageGetWidthhBitmap Rowi_width i_height

_GDIPlus_ImageGetHeighthBitmap Croi_height BitmapData

_GDIPlus_BitmapLockBitshBitmap 0 0 i_width i_height GDIP_ILMREAD

GDIP_PXF24RGB MsgBox0hBitmapBitmapData If error Then ...... i_Stride

DllStructGetDataBitmapData quotStridequotStride - Offset in bytes between consecutive

scan lines of the bitmap. If the stride is positive the bitmap is top-down. If the stride is

negative the bitmap is bottom-up. Scan0 DllStructGetDataBitmapData

quotScan0quotScan0 - Pointer to the first index 0 scan line of the bitmap. pixelData

DllStructCreatequotubyte lDataquot amp Absi_Stride i_height amp quotquot Scan0 不要使用官方论坛上提供的Absi_Stride i_height-1否则无法正确处理gif冗余等情形

MsgBox0quotquotpixelData s_BMPData DllStructGetDatapixelData quotlDataquot

s_BMPData StringTrimLefts_BMPData2去掉头部quot0xquot

_GDIPlus_BitmapUnlockBitshBitmap BitmapData _GDIPlus_ImageDisposehBitmap

_WinAPI_DeleteObject hBitmap _GDIPlus_Shutdown If b_Array2d Then要求返回二维数组 Local a_returni_widthi_height x y s For y0 To i_height-1 sStringMids_BMPData

yi_Stride21 i_width6 不要使用一些例子中提出的sStringMids_BMPData yi_width61

i_width6经实际测试该方式无法正确处理: GIF冗余带隐藏内容的图形文件一种数据加密方式或者多页图形文件当然这些情形比较少见下同 For x 0 To i_width-1

a_returnxy Numberquot0xquotampStringMidsx61 6 Next Next Else要求返回一维数组

Local a_returni_height y For y0 To i_height-1 a_returnyStringMids_BMPData

yi_Stride21 i_width6 见上说明 Next EndIf Return a_return EndFunc

gtmyReadImageToArray Func ReadFirstNum 读取第一个字符 CheckNum1

CheckNum2 CheckNum3 CheckNum4 CheckNum5 CheckNum6 CheckNum7

CheckNum8 CheckNum9 CheckNum0 FirstNumTempNum EndFunc Func

ReadSecondNum 读取 第二个字符 for m1 to aRecords0 Step 1 将 字符数组整个左移60个字符 aRecordsmStringTrimLeftaRecordsm60 Next CheckNum1 CheckNum2

CheckNum3 CheckNum4 CheckNum5 CheckNum6 CheckNum7 CheckNum8

CheckNum9 CheckNum0 SecondNumTempNum EndFunc Func ReadThirdNum 读取

第三个字符 for m1 to aRecords0 Step 1 将字符数组再次整个 左移60位

aRecordsmStringTrimLeftaRecordsm60 Next CheckNum1 CheckNum2 CheckNum3

CheckNum4 CheckNum5 CheckNum6 CheckNum7 CheckNum8 CheckNum9

CheckNum0 ThirdNumTempNum EndFunc Func ReadFourthNum 读取第四个字符

for m1 to aRecords0 Step 1 再次左移60 aRecordsmStringTrimLeftaRecordsm60 Next

CheckNum1 CheckNum2 CheckNum3 CheckNum4 CheckNum5 CheckNum6

CheckNum7 CheckNum8 CheckNum9 CheckNum0 FourthNumTempNum EndFunc

Func ChuShiHua 初始化变量 Line1quotquot Line2quotquot Line22quotquot

Line3quotquot Line33quotquot Line4quotquot Line44quotquot Line5quotquot

Line55quotquot Line6quotquot Line66quotquot Line7quotquot Line77quotquot

Line8quotquot Line88quotquot Line9quotquot Line99quotquot Line10quotquot

Line102quotquot Line11quotquot Line112quotquot Line12quotquot EndFunc Func

CheckNum1 判断数字1 特征信息 1第一行 43-54 第二行 31-54 第三 四 五 六

七 八 九 十 十一 十二行 43-54 ChuShiHua

Line1StringLeftStringTrimLeftaRecords14212

Line2StringLeftStringTrimLeftaRecords23024

Line3StringLeftStringTrimLeftaRecords34212

Line4StringLeftStringTrimLeftaRecords44212

Line5StringLeftStringTrimLeftaRecords54212

Line6StringLeftStringTrimLeftaRecords64212

Line7StringLeftStringTrimLeftaRecords74212

Line8StringLeftStringTrimLeftaRecords84212

Line9StringLeftStringTrimLeftaRecords94212

Line10StringLeftStringTrimLeftaRecords104212

Line11StringLeftStringTrimLeftaRecords114212

Line12StringLeftStringTrimLeftaRecords124212

MsgBox0quotcheck1quotLine1ampquotquotampLine2ampquotquotampLine22ampquotquotampLine3ampquotquotampLine33ampquotquotampLine4ampquotquotampLine44ampquotquotampLine5ampquotquotampLine55ampquotquotampLine6ampquotquotampLine66ampquotquotampLine7ampquotquotampLine77ampquotquotampLine8ampquotquotampLine88ampquotquotampLine9ampquotquotampLine99ampquotquotampLine10ampquotquotampLine102ampquotquotampLine11ampquotquotampLine112ampquotquotampLine12 if Line1ZeroNums12 And Line3ZeroNums12 And Line4ZeroNums12 And

Line5ZeroNums12 And Line6ZeroNums12 And Line7ZeroNums12 And

Line8ZeroNums12 And Line9ZeroNums12 And Line10ZeroNums12 And

Line11ZeroNums12 And Line12ZeroNums12 And Line2ZeroNums24 Then

TempNumquot1quot EndIf EndFunc Func CheckNum2 判断数字2 特征信息 2第一行 37-60 第二行 31-42 和 55-66 第三行 25-36 和 61-72 第四 五行 61-72 第六行 55-66 第七行 49-60 第八行 43-54 第九行 37-48 第十行 31-42 第十一行

25-36 第十二行 25-72 ChuShiHua Line1StringLeftStringTrimLeftaRecords13612

Line2StringLeftStringTrimLeftaRecords23012

Line22StringLeftStringTrimLeftaRecords25412

Line3StringLeftStringTrimLeftaRecords32412

Line33StringLeftStringTrimLeftaRecords36012

Line4StringLeftStringTrimLeftaRecords46012

Line5StringLeftStringTrimLeftaRecords56012

Line6StringLeftStringTrimLeftaRecords65412

Line7StringLeftStringTrimLeftaRecords74812

Line8StringLeftStringTrimLeftaRecords84212

Line9StringLeftStringTrimLeftaRecords93612

Line10StringLeftStringTrimLeftaRecords103012

Line11StringLeftStringTrimLeftaRecords112412

Line12StringLeftStringTrimLeftaRecords122448

MsgBox0quotCheck2quotLine1ampquotquotampLine2ampquotquotampLine22ampquotquotampLine3ampquotquotampLine33ampquotquotampLine4ampquotquotampLine44ampquotquotampLine5ampquotquotampLine55ampquotquotampLine6ampquotquotampLine66ampquotquotampLine7ampquotquotampLine77ampquotquotampLine8ampquotquotampLine88ampquotquotampLine9ampquotquotampLine99ampquotquotampLine10ampquotquotampLine102ampquotquotampLine11ampquotquotampLine112ampquotquotampLine12 if Line1ZeroNums12 And Line2ZeroNums12 And Line3ZeroNums12 And

Line22ZeroNums12 And Line33ZeroNums12 And Line4ZeroNums12 And

Line5ZeroNums12 And Line6ZeroNums12 And Line7ZeroNums12 And

Line8ZeroNums12 And Line9ZeroNums12 And Line10ZeroNums12 And

Line11ZeroNums12 And Line12ZeroNums48 Then TempNumquot2quot EndIf EndFunc

Func CheckNum3 判断数字3 特征信息 3第一 十二行 37-60 第二 十一行 31-42

和 55-66 第三 十行 25-36 和 61-72 第四 八 九行 61-72 第五 七行 55-66 第六行 43-60 ChuShiHua Line1StringLeftStringTrimLeftaRecords13624

Line2StringLeftStringTrimLeftaRecords23012

Line22StringLeftStringTrimLeftaRecords25412

Line3StringLeftStringTrimLeftaRecords32412

Line33StringLeftStringTrimLeftaRecords36012

Line4StringLeftStringTrimLeftaRecords46012

Line5StringLeftStringTrimLeftaRecords55412

Line6StringLeftStringTrimLeftaRecords64218

Line7StringLeftStringTrimLeftaRecords75412

Line8StringLeftStringTrimLeftaRecords86012

Line9StringLeftStringTrimLeftaRecords96012

Line10StringLeftStringTrimLeftaRecords102412

Line102StringLeftStringTrimLeftaRecords106012

Line11StringLeftStringTrimLeftaRecords113012

Line112StringLeftStringTrimLeftaRecords115412

Line12StringLeftStringTrimLeftaRecords123624

MsgBox0quotcheck3quotLine1ampquotquotampLine2ampquotquotampLine22ampquotquotampLine3ampquotquotampLine33ampquotquotampLine4ampquotquotampLine44ampquotquotampLine5ampquotquotampLine55ampquotquotampLine6ampquotquotampLine66ampquotquotampLine7ampquotquotampLine77ampquotquotampLine8ampquotquotampLine88ampquotquotampLine9ampquotquotampLine99ampquotquotampLine10ampquotquotampLine102ampquotquotampLine11ampquotquotampLine112ampquotquotampLine12 if Line1ZeroNums24 And Line12ZeroNums24 And Line2ZeroNums12 And

Line22ZeroNums12 And Line3ZeroNums12 And Line33ZeroNums12 And

Line4ZeroNums12 And Line5ZeroNums12 And Line7ZeroNums12 And

Line8ZeroNums12 And Line9ZeroNums12 And Line10ZeroNums12 And

Line102ZeroNums12 And Line11ZeroNums12 And Line112ZeroNums12 And

Line6ZeroNums18 Then TempNumquot3quot EndIf EndFunc Func CheckNum4 判断数字4 特征信息 4第.

本文标签: 数组图形文件返回原色方式