suixin812 发表于 2014-3-31 20:50:48

一个辅助设置颜色矩阵的Lua脚本

本帖最后由 suixin812 于 2014-3-31 20:55 编辑



背景
颜色矩阵是一个很神奇的东西,它可以调整图像的颜色,各种意义上的调整,
包括去色、反色、黑白、染色、调整不透明度、图像亮度、对比度、饱和度等等。
颜色矩阵并不是RM发明的,在其他很多地方都能看到,比如Photoshop里的各种滤镜效果和各种颜色调整。
Rainmeter中,任何包含图片的Meter都可以通过5个选项来设置颜色矩阵调整图像:ColorMatrix1=1; 0; 0; 0; 0
ColorMatrix2=0; 1; 0; 0; 0
ColorMatrix3=0; 0; 1; 0; 0
ColorMatrix4=0; 0; 0; 1; 0
ColorMatrix5=0; 0; 0; 0; 1功能很强大,方法也是有,但似乎……有点麻烦和困难啊。
比如图像太暗了,我要让图像亮一些,矩阵该怎么写呢?
好吧,这个问题你可以通过翻阅手册解决,
但如果,我想通过Bang指令来设置矩阵和改变矩阵呢?
如果要同时修改图像的对比度和饱和度呢?
抓狂了吧~~

解决方案
为了解决RM中颜色矩阵功能强大但使用困难这一问题,
本人制作了一个Lua脚本(ColorMatrix.lua),用来辅助颜色矩阵的计算和应用。
(RM 3.0.2win8.1 x32)


通过这个Lua脚本,你可以直接将指定的亮度、对比度、饱和度应用到Meter上,
省去了繁琐的计算。
图像染色和不透明度也是一样。
此外如果你想对图片应用某个颜色滤镜,脚本也能帮你做到。
包含的滤镜有灰度、反色、红蓝反色、褐色、黑白、偏光、白色到Alpha7种滤镜。

ColorMatrix.lua脚本有两种工作模式,(模式1完成后灵机一动想到了模式2)
为了更好理解这两种模式,我专门制作了两个皮肤来演示。

皮肤介绍

皮肤1

这个皮肤演示了使用!CommandMeasure指令向脚本传送参数,进而实现设置矩阵。
点击右下面三个颜色条,相应的参数会被通过Bang传递到脚本中,
脚本计算矩阵并应用到右侧图片的右半边,与右半边原图像对比。
同时脚本将计算的矩阵返回到Measure值,经过修饰后显示在皮肤上。
另外点击右半边图片,脚本会计算应用一个滤镜效果的矩阵。
点击左半边图片,皮肤会切换到下一张图片。
右键菜单里也有很丰富的用户自定义菜单项

使用向哪些函数传递哪些参数,见皮肤文件夹中的“ColorMatrix使用说明.txt”

示例:
设置myMeter 亮度 0.2 对比度 1.56 饱和度 0.92[!CommandMeasure Script "SetMatrix {b=0.2, c=1.56, s=0.92, meter='myMeter'}"]
[!Redraw]
皮肤2

第二个皮肤首先省去了第一个皮肤那么多很好看但并不是为了演示脚本的代码,
大量的操作被转移到右键菜单的Custom Skin Action中了
在这个皮肤中,右侧的图片被分割成三个区域:
  原图像、使用ImageTint和ImageAlpha处理后的图像、使用矩阵处理后的图像。
皮肤中,脚本不再向第一个皮肤那样需要!CommandMeasure传递矩阵参数,
而是直接从Meter节点下的5个选项读取矩阵参数。这五个选项的选项值同时显示在皮肤上。
Brightness, Contrast, Saturation, ImageTint, ImageAlpha.

这样要修改一个Meter的颜色矩阵,只要用!SetOption修改某个选项,
然后命令脚本重新扫描这个Meter就可以了。
(皮肤加载时会进行第一次扫描。)

使用向哪些函数传递哪些参数,也见皮肤文件夹中的“ColorMatrix使用说明.txt”

示例:
设置Meter1与Meter2,染色FF8800,饱和度 150[!SetOption Meter1 ImageTint FF8800] [!SetOption Meter2 ImageTint FF8800]
[!SetOption Meter1 Saturation 150] [!SetOption Meter2 Saturation 150]
[!CommandMeasure Script "scanMeter('Meter1 | Meter2')"]以上


脚本信息
<ColorMatrix.lua>
      By: 风飏
      Version: 0.1.0
      Update: 2014/3
      License: Creative Commons BY-NC-SA 3.0
      Information: 脚本用于计算和应用Meter的颜色矩阵。既可以通过Bang指令命令脚本计算一个矩阵并应用到Meter,也可以命令脚本扫描一些Meter,由Meter下的特定选项来设置矩阵。
下载


ammonka 发表于 2020-8-7 14:49:04


功能很强大

aimer13870 发表于 2020-2-19 08:17:46

感谢大佬分享

goeway 发表于 2019-6-9 19:57:10

谢谢分享。。。。

咣咣咣就是干 发表于 2018-8-15 00:38:21

皮肤中,而是直接从Meter节点下的5个选项读取矩阵参数

咣咣咣就是干 发表于 2018-8-14 22:32:52

相应的参数会被通过Bang传递到脚本中

咣咣咣就是干 发表于 2018-8-14 20:27:16

脚本也能帮你做到

seaneo 发表于 2018-8-14 19:24:28

功能很强大

咣咣咣就是干 发表于 2018-8-14 18:21:44

此外如果你想对图片应用某个颜色滤镜

seaneo 发表于 2018-8-14 17:18:58

与右半边原图像对比

咣咣咣就是干 发表于 2018-8-14 16:16:16

任何包含图片的Meter都可以通过5个选项来设置颜色矩阵调整图像:
页: [1] 2 3 4 5
查看完整版本: 一个辅助设置颜色矩阵的Lua脚本