彩色图去色转黑白图源码

.版本 2 .支持库 RegEx .程序集 窗口程序集1 .子程序 _按钮1_被单击 .局部变量 hToken, 整数型 .局部变量 s, 整数型 .局部变量 ScriptDir, 文本型 s = 取启动时间 () ScriptDir = 取运行目录 () hToken = _GDIPlus_Startup () _GDIPlus_ImageToGray (ScriptDir + “\haijie1223.jpg”, ScriptDir + “\New_灰度.jpg”) GdiplusShutdown (hToken) s = 取启动时间 () - s 标题 = “耗时:” + 到文本 (s) + “毫秒” .子程序 _GDIPlus_ImageToGray, 整数型, , 将彩色转为灰度(去色),输出文件或灰度图像对象句柄 .参数 sFile, 文本型 .参数 sFile_Gray, 文本型 .局部变量 hImage, 整数型 .局部变量 iW, 整数型 .局部变量 iH, 整数型 .局部变量 hGraphics, 整数型 .局部变量 hIA, 整数型 .局部变量 tCOLORMATRIX, cColorMatrix .局部变量 iRet, 整数型 GdipLoadImageFromFile (编码_Ansi到Unicode (sFile, ), hImage) GdipGetImageWidth (hImage, iW) GdipGetImageHeight (hImage, iH) iRet = GdipGetImageGraphicsContext (hImage, hGraphics) iRet = GdipCreateImageAttributes (hIA) tCOLORMATRIX = _GDIPlus_ColorMatrixCreateGrayScale () iRet = GdipSetImageAttributesColorMatrix (hIA, 0, 真, tCOLORMATRIX, 0, 0) iRet = GdipDrawImageRectRect (hGraphics, hImage, 0, 0, iW, iH, 0, 0, iW, iH, 2, hIA, 0, 0) .如果 (sFile_Gray ≠ “”) iRet = _GDIPlus_ImageSaveToFile (hImage, sFile_Gray) GdipDeleteGraphics (hGraphics) GdipDisposeImage (hImage) 返回 (iRet) .否则 返回 (hImage) .如果结束 .子程序 _GDIPlus_ImageSaveToFile, 整数型 .参数 hImage, 整数型 .参数 sFileName, 文本型 .局部变量 sExt, 文本型 .局部变量 pStr, 文本型 .局部变量 Clsid, 字节集 .局部变量 iRet, 整数型 .局部变量 StringRegExp, 正则表达式 .局部变量 aRet, 搜索结果, , "0" StringRegExp.创建 (“.*\.(\w{3,5})$”, ) aRet = StringRegExp.搜索全部 (sFileName) sExt = aRet [1].取子匹配文本 (sFileName, 1, ) .如果真 (sExt = “”) sExt = “jpg” .如果真结束 .判断开始 (sExt = “bmp”) ' bmp pStr = “{557CF400-1A04-11D3-9A73-0000F81EF32E}” .判断 (sExt = “jpg”) ' jpg pStr = “{557CF401-1A04-11D3-9A73-0000F81EF32E}” .判断 (sExt = “gif”) ' gif pStr = “{557CF402-1A04-11D3-9A73-0000F81EF32E}” .判断 (sExt = “tiff”) ' tiff pStr = “{557CF405-1A04-11D3-9A73-0000F81EF32E}” .判断 (sExt = “png”) ' png pStr = “{557CF406-1A04-11D3-9A73-0000F81EF32E}” .默认 .判断结束 Clsid = 取空白字节集 (16) CLSIDFromString (A2W (pStr), Clsid) ' 获取图像格式对应的Clsid iRet = GdipSaveImageToFile (hImage, 编码_Ansi到Unicode (sFileName, ), Clsid, 0) .如果 (iRet = 0) 返回 (1) .否则 返回 (0) .如果结束 .子程序 A2W, 字节集, , 将Ansi转成Unicode .参数 欲转换的文本, 文本型 .局部变量 缓冲区, 字节集 .局部变量 缓冲区大小, 整数型 缓冲区大小 = MultiByteToWideChar (0, 0, 欲转换的文本, -1, { }, 0) × 2 缓冲区 = 取空白字节集 (缓冲区大小) MultiByteToWideChar (0, 0, 欲转换的文本, 取文本长度 (欲转换的文本), 缓冲区, 缓冲区大小) 返回 (缓冲区) .子程序 _GDIPlus_ColorMatrixCreateGrayScale, cColorMatrix .局部变量 iI, 整数型 .局部变量 iJ, 整数型 .局部变量 tCM, cColorMatrix .局部变量 aLums, 小数型, , "4" aLums [1] = 0.3086 aLums [2] = 0.6094 aLums [3] = 0.082 aLums [4] = 0 .变量循环首 (1, 3, 1, iI) .变量循环首 (1, 3, 1, iJ) tCM.cColorMatrix [iI] [iJ] = aLums [iI] .变量循环尾 () .变量循环尾 () tCM.cColorMatrix [19] = 1 tCM.cColorMatrix [25] = 1 返回 (tCM) .子程序 编码_Ansi到Unicode, 字节集, 公开, 将Ansi码转换为Unicode码;成功返回转换后的字节集; .参数 Ansi, 文本型, , 欲转换的Ansi文本 .参数 非标准Unicode编码, 逻辑型, 可空, 默认为假,为标准Unicode编码 .局部变量 数据2, 字节集 .局部变量 长度, 整数型 .如果真 (Ansi = “”) 返回 ({ }) .如果真结束 长度 = MultiByteToWideChar (0, 0, Ansi, -1, { }, 0) 数据2 = 取空白字节集 (长度 × 2) MultiByteToWideChar (936, 0, Ansi, -1, 数据2, 长度 × 2) .如果真 (非标准Unicode编码) 数据2 = 取字节集左边 (数据2, 取字节集长度 (数据2) - 2) .如果真结束 返回 (数据2) .子程序 _GDIPlus_Startup, 整数型, 公开, 成功返回标志 .局部变量 tInput, GdiplusStartupInput .局部变量 tToken, 整数型 tInput.GdiplusVersion = 1 GdiplusStartup (tToken, tInput, 0) 返回 (tToken)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

彩色图去色转黑白图源码》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注