ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: jaxxcyh

[原创] 在Excel单元格里绘图-WIA库的绘图功能

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-12 19:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jaxxcyh 于 2024-8-12 19:47 编辑

显示灰度图片,灰度值=0.3R+0.59G+0.11B,RGB均设为此数值,即可显示灰度图像。
  1.             '灰度显示,公式为灰度值=0.3R+0.59G+0.11B,R=G=B,均设为此值。
  2.             Dim GreyVal As Byte
  3.             GreyVal = Int(picR * 0.3 + picG * 0.59 + picB * 0.11)
  4.             Cells(i, j).Interior.Color = RGB(GreyVal, GreyVal, GreyVal)
复制代码
灰度显示-WIA库绘图探索.png

灰度图片-WIA库绘图探索.zip

91.46 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-12 23:24 | 显示全部楼层
图片的模糊,算法原理就是将当前位置的像素与邻近像素颜色值进行平均。
这里提供一个像素模糊函数,输入参数为当前像素点的行、列坐标及完整图片像素RGB数据数组,返回值为此坐标像素点模糊后的颜色RGB值。
  1. Rem 此函数输入参数为当前像素的行数、列数(即坐标)以及完整的图像arrRGB数组,
  2. Rem 以(R,G,B)数组形式返回当前像素与邻近像素各颜色分量的均值。
  3. Function blurPixel(r As Integer, c As Integer, ByRef arrRGB) As Variant

  4.     '定义8个方位的行列坐标变量
  5.     Dim r_E As Byte, c_E As Byte       '东
  6.     Dim r_ES As Byte, c_ES As Byte     '东南
  7.     Dim r_S As Byte, c_S As Byte       '南
  8.     Dim r_WS As Byte, c_WS As Byte     '西南
  9.     Dim r_W As Byte, c_W As Byte       '西
  10.     Dim r_WN As Byte, c_WN As Byte     '西北
  11.     Dim r_N As Byte, c_N As Byte       '北
  12.     Dim r_EN As Byte, c_EN As Byte     '东北
  13.    
  14.     Dim width As Integer, height As Integer
  15.     width = UBound(arrRGB, 2)
  16.     height = UBound(arrRGB, 1)
  17.    
  18.     Dim avgR As Byte, avgG As Byte, avgB As Byte  'R,G,B各色的均值

  19.     '各个方位坐标处理
  20.     '东
  21.     r_E = r
  22.     c_E = c + 1: If c_E > width Then c_E = width
  23.     '东南
  24.     r_ES = r + 1: If r_ES > height Then r_ES = height
  25.     c_ES = c + 1: If c_ES > width Then c_ES = width
  26.     '南
  27.     r_S = r + 1: If r_S > height Then r_S = height
  28.     c_S = c
  29.     '西南
  30.     r_WS = r + 1: If r_WS > height Then r_WS = height
  31.     c_WS = c - 1: If c_WS = 0 Then c_WS = 1
  32.     '西
  33.     r_W = r
  34.     c_W = c - 1: If c_W = 0 Then c_W = 1
  35.     '西北
  36.     r_WN = r - 1: If r_WN = 0 Then r_WN = 1
  37.     c_WN = c - 1: If c_WN = 0 Then c_WN = 1
  38.     '北
  39.     r_N = r - 1: If r_N = 0 Then r_N = 1
  40.     c_N = c
  41.     '东北
  42.     r_EN = r - 1: If r_EN = 0 Then r_EN = 1
  43.     c_EN = c + 1: If c_EN > width Then c_EN = width
  44.    
  45.     '计算均值
  46.     avgR = WorksheetFunction.Average _
  47.         (arrRGB(r_E, c_E)(0), arrRGB(r_ES, c_ES)(0), _
  48.          arrRGB(r_S, c_S)(0), arrRGB(r_WS, c_WS)(0), _
  49.          arrRGB(r_W, c_W)(0), arrRGB(r_WN, c_WN)(0), _
  50.          arrRGB(r_N, c_N)(0), arrRGB(r_EN, c_EN)(0), _
  51.          arrRGB(r, c)(0))
  52.     avgG = WorksheetFunction.Average _
  53.         (arrRGB(r_E, c_E)(1), arrRGB(r_ES, c_ES)(1), _
  54.          arrRGB(r_S, c_S)(1), arrRGB(r_WS, c_WS)(1), _
  55.          arrRGB(r_W, c_W)(1), arrRGB(r_WN, c_WN)(1), _
  56.          arrRGB(r_N, c_N)(1), arrRGB(r_EN, c_EN)(1), _
  57.          arrRGB(r, c)(1))
  58.     avgB = WorksheetFunction.Average _
  59.         (arrRGB(r_E, c_E)(2), arrRGB(r_ES, c_ES)(2), _
  60.          arrRGB(r_S, c_S)(2), arrRGB(r_WS, c_WS)(2), _
  61.          arrRGB(r_W, c_W)(2), arrRGB(r_WN, c_WN)(2), _
  62.          arrRGB(r_N, c_N)(2), arrRGB(r_EN, c_EN)(2), _
  63.          arrRGB(r, c)(2))
  64.    
  65.     blurPixel = Array(avgR, avgG, avgB)

  66. End Function

复制代码
图片的模糊-VBA绘图探索.png

模糊效果-WIA库绘图探索.zip

136.85 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 00:14 | 显示全部楼层
多轮模糊的效果,就是把糊化后的数据重新放回原来的arrRGB数组,不停迭代而已。
多轮模糊效果.png

多轮模糊效果-WIA绘图功能探索.zip

143.45 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2024-8-14 21:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢分享!

TA的精华主题

TA的得分主题

发表于 2024-8-15 10:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 11:23 , Processed in 0.041650 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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