◆- Adobe插件与脚本区 主要讨论Adobe插件开发与软件脚本撰写

发表新主题 关闭主题
 
查看全部 主题工具
旧 2020-12-06, 19:39     #1
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
默认 LAB转RGB怎么转换   



现在有RGB转LAB的代码,但是LAB转RGB不知道怎么弄,不知道有没有高手帮下忙
function RGBtoLAB(R, G, B)
{
var r = R / 255.000;
var g = G / 255.000;
var b = B / 255.000;
// gamma 2.2
if ( r > 0.04045 ){
r = Math.pow(( r + 0.055 ) / 1.055, 2.4);
} else {
r = r / 12.92;
}

if ( g > 0.04045 ){
g = Math.pow(( g + 0.055 ) / 1.055, 2.4);
} else {
g = g / 12.92;
}
if ( b > 0.04045 ){
b = Math.pow(( b + 0.055 ) / 1.055, 2.4);
} else {
b = b / 12.92;
}
// sRGB
var X = r * 0.436052025 + g * 0.385081593 + b * 0.143087414;
var Y = r * 0.222491598 + g * 0.716886060 + b * 0.060621486;
var Z = r * 0.013929122 + g * 0.097097002 + b * 0.714185470;
// XYZ range: 0~100
X = X * 100.000;
Y = Y * 100.000;
Z = Z * 100.000;
// Reference White Point
var ref_X = 96.4221;
var ref_Y = 100.000;
var ref_Z = 82.5211;
X = X / ref_X;
Y = Y / ref_Y;
Z = Z / ref_Z;
// Lab
if (X > 0.008856){
X = Math.pow(X, 1/3.000);
} else {
X = ( 7.787 * X ) + ( 16 / 116.000 );
}
if (Y > 0.008856){
Y = Math.pow(Y, 1/3.000);
} else {
Y = ( 7.787 * Y ) + ( 16 / 116.000 );
}
if (Z > 0.008856){
Z = Math.pow(Z, 1/3.000);
} else {
Z = ( 7.787 * Z ) + ( 16 / 116.000 );
}

var lab_L = ( 116.000 * Y ) - 16.000;
var lab_A = 500.000 * ( X - Y );
var lab_B = 200.000 * ( Y - Z );

return [lab_L, lab_A , lab_B];


}


alert(RGBtoLAB(100, 100, 100));
wudan 当前离线  
旧 2020-12-07, 09:44     #2
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
默认

引用:
作者: Art.XiaoLu 查看帖子
附件 434475
这个就是lab色
不知道你的代码干嘛用的
但是搞印刷用的色域是cmyk,连rgb都用不全的,lab的色域更大,基本用不到,
即便有特殊需求用得到,显卡和显示器还受限制呢
https://baike.baidu.com/item/Lab%E9%...A8%A1%E5%9E%8B
详细看这里,
有个小小的需求需要用到这个算法
wudan 当前离线  
旧 2020-12-08, 21:32     #3
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
wudan wudan 当前离线
正式会员
等级: 三袋长老
级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时级别:25 | 在线时长:778小时 | 升级还需:2小时
 
Uid: 61838
注册日期: 2007-12-08, 21:41
帖子: 138
感谢: 1
17 个帖子获得 58 次感谢
现金: 307金币
资产: 307金币
声望: 10 wudan 向着好的方向发展
默认

引用:
作者: 重庆印刷工 查看帖子
试试看如下的自定义函数
Public Function LABtoRGB(l, a, b, n)

Dim fx, fy, fz, rr, gg, bb, r, g, B2 As Double

fy = ((l + 16) / 116) ^ 3

If fy < 0.008856 Then fy = l / 903.3

Y = fy

If fy > 0.008856 Then

fy = fy ^ (1 / 3)

Else

fy = 7.787 * fy + 16 / 116

End If

fx = a / 500 + f...
这段好像哪里见过,可行吗 VBS不是很懂
wudan 当前离线  
发表新主题 关闭主题


发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


律师声明:本站内容,均具有版权,未经书面授权,禁止转载,严禁镜像,违者承担一切后果!
论坛广告报价   广告联系及办理企业会员服务QQ:57880388 站务管理QQ:35529388


所有时间均为 +8, 现在的时间是 2025-01-04 16:11.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
 
Copyright © 2004-2022